summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormcentner <mcentner@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4>2008-09-11 12:16:35 +0000
committermcentner <mcentner@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4>2008-09-11 12:16:35 +0000
commit66cfb865fbfa7af514e803003f928d77f1156e46 (patch)
tree909f3c586b5c2daf9da4cc8b8aca4c1c58dd0565
parent2f566efcd4e861ceac5be5cf1b197e04639627a0 (diff)
downloadmocca-66cfb865fbfa7af514e803003f928d77f1156e46.tar.gz
mocca-66cfb865fbfa7af514e803003f928d77f1156e46.tar.bz2
mocca-66cfb865fbfa7af514e803003f928d77f1156e46.zip
Added to be signed data validation.
git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@32 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4
-rw-r--r--BKUViewer/.classpath10
-rw-r--r--BKUViewer/.project23
-rw-r--r--BKUViewer/.settings/org.eclipse.jdt.core.prefs5
-rw-r--r--BKUViewer/.settings/org.maven.ide.eclipse.prefs8
-rw-r--r--BKUViewer/pom.xml44
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/SLXHTMLValidator.java251
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CSSValidatorSLXHTML.java95
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBackgroundColorSLXHTML.java57
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBackgroundSLXHTML.java93
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderBottomColorSLXHTML.java57
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderColorSLXHTML.java81
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderLeftColorSLXHTML.java57
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderRightColorSLXHTML.java57
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderSLXHTML.java85
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderTopColorSLXHTML.java57
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssColorSLXHTML.java99
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssFontSLXHTML.java59
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssLetterSpacingSLXHTML.java54
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginBottomSLXHTML.java60
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginLeftSLXHTML.java61
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginRightSLXHTML.java60
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginSLXHTML.java101
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginTopSLXHTML.java61
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingBottomSLXHTML.java60
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingLeftSLXHTML.java60
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingRightSLXHTML.java60
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingSLXHTML.java102
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingTopSLXHTML.java61
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssTextDecorationSLXHTML.java51
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssWordSpacingSLXHTML.java54
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/SLXHTMLInvalidParamException.java71
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/SLXHTMLStyle.java22
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/TableLayoutSLXHTML.java45
-rw-r--r--BKUViewer/src/main/java/at/gv/egiz/bku/text/TextValidator.java32
-rw-r--r--BKUViewer/src/main/resources/META-INF/services/at.gv.egiz.bku.viewer.Validator2
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml-model-1.xsd469
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml-modules-1.xsd248
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml.xsd70
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-attribs-1.xsd72
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkphras-1.xsd161
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkpres-1.xsd37
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkstruct-1.xsd49
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-datatypes-1.xsd175
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-framework-1.xsd66
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-image-1.xsd45
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlphras-1.xsd163
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlpres-1.xsd39
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlstruct-1.xsd50
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-list-1.xsd99
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-pres-1.xsd51
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-struct-1.xsd116
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-style-1.xsd53
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-table-1.xsd272
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-text-1.xsd67
-rw-r--r--BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xml.xsd145
-rw-r--r--BKUViewer/src/main/resources/org/w3c/css/properties/Config.properties32
-rw-r--r--BKUViewer/src/main/resources/org/w3c/css/properties/ProfilesProperties.properties30
-rw-r--r--BKUViewer/src/main/resources/org/w3c/css/properties/SLXHTMLProperties.properties641
-rw-r--r--BKUViewer/src/test/java/at/gv/egiz/bku/slxhtml/ValidatorTest.java66
-rw-r--r--BKUViewer/src/test/java/at/gv/egiz/bku/slxhtml/css/CssValidatorTest.java75
-rw-r--r--BKUViewer/src/test/resources/at/gv/egiz/bku/slxhtml/test.xhtml10
-rw-r--r--BKUViewer/src/test/resources/commons-logging.properties1
-rw-r--r--BKUViewer/src/test/resources/log4j.properties19
-rw-r--r--bkucommon/pom.xml9
-rw-r--r--bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/InputStreamPartSource.java5
-rw-r--r--bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/SLResultPart.java5
-rw-r--r--bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureCommandImpl.java13
-rw-r--r--bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/DataObject.java119
-rw-r--r--bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignature.java11
-rw-r--r--bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/Signature.java10
-rw-r--r--bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLViewerException.java7
-rw-r--r--bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidationException.java38
-rw-r--r--bkucommon/src/main/java/at/gv/egiz/bku/viewer/Validator.java25
-rw-r--r--bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidatorFactory.java165
-rw-r--r--bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureTest.java21
-rw-r--r--pom.xml33
76 files changed, 5885 insertions, 52 deletions
diff --git a/BKUViewer/.classpath b/BKUViewer/.classpath
new file mode 100644
index 00000000..1041acfa
--- /dev/null
+++ b/BKUViewer/.classpath
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="target/classes" path="src/main/java"/>
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+ <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+ <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/BKUViewer/.project b/BKUViewer/.project
new file mode 100644
index 00000000..c18f3f10
--- /dev/null
+++ b/BKUViewer/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>BKUViewer</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.maven.ide.eclipse.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.maven.ide.eclipse.maven2Nature</nature>
+ </natures>
+</projectDescription>
diff --git a/BKUViewer/.settings/org.eclipse.jdt.core.prefs b/BKUViewer/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..59690d7b
--- /dev/null
+++ b/BKUViewer/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,5 @@
+#Tue Sep 09 16:54:39 CEST 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/BKUViewer/.settings/org.maven.ide.eclipse.prefs b/BKUViewer/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 00000000..feb34e97
--- /dev/null
+++ b/BKUViewer/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,8 @@
+#Tue Sep 09 16:54:38 CEST 2008
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+version=1
diff --git a/BKUViewer/pom.xml b/BKUViewer/pom.xml
new file mode 100644
index 00000000..d7dbe0aa
--- /dev/null
+++ b/BKUViewer/pom.xml
@@ -0,0 +1,44 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUViewer</artifactId>
+ <name>BKU viewer components</name>
+ <version>1.0-SNAPSHOT</version>
+ <description />
+ <dependencies>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>bkucommon</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.w3c</groupId>
+ <artifactId>css-validator</artifactId>
+ <version>2.1-mocca</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.w3c</groupId>
+ <artifactId>jigsaw</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>tagsoup</groupId>
+ <artifactId>tagsoup</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+</project> \ No newline at end of file
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/SLXHTMLValidator.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/SLXHTMLValidator.java
new file mode 100644
index 00000000..7ce5fdbe
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/SLXHTMLValidator.java
@@ -0,0 +1,251 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.nio.charset.IllegalCharsetNameException;
+import java.nio.charset.UnsupportedCharsetException;
+import java.util.Locale;
+
+import javax.xml.XMLConstants;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+import javax.xml.validation.ValidatorHandler;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.xml.sax.Attributes;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+import at.gv.egiz.bku.slxhtml.css.CSSValidatorSLXHTML;
+import at.gv.egiz.bku.viewer.ValidationException;
+
+public class SLXHTMLValidator implements at.gv.egiz.bku.viewer.Validator {
+
+ /**
+ * The schema file for the SLXHTML schema.
+ */
+ private static final String SLXHTML_SCHEMA_FILE = "at/gv/egiz/bku/slxhtml/slxhtml.xsd";
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(SLXHTMLValidator.class);
+
+ private static Schema slSchema;
+
+ /**
+ * Initialize the security layer schema.
+ */
+ private synchronized static void ensureSchema() {
+ if (slSchema == null) {
+ try {
+ SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+ ClassLoader cl = SLXHTMLValidator.class.getClassLoader();
+ URL schemaURL = cl.getResource(SLXHTML_SCHEMA_FILE);
+ log.debug("Trying to create SLXHTML schema from URL '" + schemaURL + "'.");
+ long t0 = System.currentTimeMillis();
+ slSchema = schemaFactory.newSchema(schemaURL);
+ long t1 = System.currentTimeMillis();
+ log.debug("SLXHTML schema successfully created in " + (t1 - t0) + "ms.");
+ } catch (SAXException e) {
+ log.error("Failed to load security layer XHTML schema.", e);
+ throw new RuntimeException("Failed to load security layer XHTML schema.", e);
+ }
+
+ }
+ }
+
+ public SLXHTMLValidator() {
+ ensureSchema();
+ }
+
+ public void validate(InputStream is, String charset)
+ throws ValidationException {
+ if (charset == null) {
+ validate(is, (Charset) null);
+ } else {
+ try {
+ validate(is, Charset.forName(charset));
+ } catch (IllegalCharsetNameException e) {
+ throw new ValidationException(e);
+ } catch (UnsupportedCharsetException e) {
+ throw new ValidationException(e);
+ }
+ }
+ }
+
+ public void validate(InputStream is, Charset charset) throws ValidationException {
+
+ SAXParserFactory spf = SAXParserFactory.newInstance();
+ spf.setNamespaceAware(true);
+ spf.setSchema(slSchema);
+ spf.setValidating(true);
+ spf.setXIncludeAware(false);
+
+ SAXParser parser;
+ try {
+ parser = spf.newSAXParser();
+ } catch (ParserConfigurationException e) {
+ log.error("Failed to create SLXHTML parser.", e);
+ throw new RuntimeException("Failed to create SLXHTML parser.", e);
+ } catch (SAXException e) {
+ log.error("Failed to create SLXHTML parser.", e);
+ throw new RuntimeException("Failed to create SLXHTML parser.", e);
+ }
+
+ InputSource source;
+ if (charset != null) {
+ source = new InputSource(new InputStreamReader(is, charset));
+ } else {
+ source = new InputSource(is);
+ }
+
+
+ ValidatorHandler validatorHandler = slSchema.newValidatorHandler();
+
+ DefaultHandler defaultHandler = new ValidationHandler(validatorHandler);
+ try {
+ parser.parse(source, defaultHandler);
+ } catch (SAXException e) {
+ if (e.getException() instanceof ValidationException) {
+ throw (ValidationException) e.getException();
+ } else {
+ throw new ValidationException(e);
+ }
+ } catch (IOException e) {
+ throw new ValidationException(e);
+ }
+
+ }
+
+ private void validateCss(InputStream is) throws ValidationException {
+ CSSValidatorSLXHTML cssValidator = new CSSValidatorSLXHTML();
+ // TODO: use the right locale
+ cssValidator.validate(is, Locale.getDefault(), "SLXHTML", 0);
+ }
+
+ private class ValidationHandler extends DefaultHandler implements ContentHandler {
+
+ private ValidatorHandler validatorHandler;
+
+ private boolean insideStyle = false;
+
+ private StringBuffer style = new StringBuffer();
+
+ private ValidationHandler(ValidatorHandler contentHandler) {
+ this.validatorHandler = contentHandler;
+ }
+
+ @Override
+ public void endDocument() throws SAXException {
+ validatorHandler.endDocument();
+ }
+
+ @Override
+ public void endPrefixMapping(String prefix) throws SAXException {
+ validatorHandler.endPrefixMapping(prefix);
+ }
+
+ @Override
+ public void ignorableWhitespace(char[] ch, int start, int length)
+ throws SAXException {
+ validatorHandler.ignorableWhitespace(ch, start, length);
+ }
+
+ @Override
+ public void processingInstruction(String target, String data)
+ throws SAXException {
+ validatorHandler.processingInstruction(target, data);
+ }
+
+ @Override
+ public void setDocumentLocator(Locator locator) {
+ validatorHandler.setDocumentLocator(locator);
+ }
+
+ @Override
+ public void skippedEntity(String name) throws SAXException {
+ validatorHandler.skippedEntity(name);
+ }
+
+ @Override
+ public void startDocument() throws SAXException {
+ validatorHandler.startDocument();
+ }
+
+ @Override
+ public void startPrefixMapping(String prefix, String uri)
+ throws SAXException {
+ validatorHandler.startPrefixMapping(prefix, uri);
+ }
+
+ @Override
+ public void startElement(String uri, String localName, String name,
+ Attributes attributes) throws SAXException {
+ validatorHandler.startElement(uri, localName, name, attributes);
+
+ System.out.println(uri + ":" + localName);
+
+ if ("http://www.w3.org/1999/xhtml".equals(uri) &&
+ "style".equals(localName)) {
+ insideStyle = true;
+ }
+ }
+
+ @Override
+ public void characters(char[] ch, int start, int length)
+ throws SAXException {
+ validatorHandler.characters(ch, start, length);
+
+ if (insideStyle) {
+ style.append(ch, start, length);
+ }
+
+ }
+
+ @Override
+ public void endElement(String uri, String localName, String name)
+ throws SAXException {
+ validatorHandler.endElement(uri, localName, name);
+
+ if (insideStyle) {
+ insideStyle = false;
+ try {
+ validateCss(new ByteArrayInputStream(style.toString().getBytes(Charset.forName("UTF-8"))));
+ } catch (ValidationException e) {
+ throw new SAXException(e);
+ }
+ }
+ }
+
+ }
+
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CSSValidatorSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CSSValidatorSLXHTML.java
new file mode 100644
index 00000000..7abe4741
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CSSValidatorSLXHTML.java
@@ -0,0 +1,95 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Locale;
+
+import org.w3c.css.css.CssParser;
+import org.w3c.css.css.StyleSheet;
+import org.w3c.css.css.StyleSheetParser;
+import org.w3c.css.parser.CssError;
+import org.w3c.css.parser.Errors;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.Util;
+import org.w3c.css.util.Warning;
+import org.w3c.css.util.Warnings;
+
+import at.gv.egiz.bku.viewer.ValidationException;
+
+public class CSSValidatorSLXHTML {
+
+ public void validate(InputStream input, Locale locale, String title, int lineno) throws ValidationException {
+
+ // disable imports
+ Util.importSecurity = true;
+
+ CssParser cssParser = new StyleSheetParser();
+
+ ApplContext ac = new ApplContext(locale.getLanguage());
+ ac.setCssVersion("slxhtml");
+ ac.setMedium("all");
+
+ URL url;
+ try {
+ url = new URL("http://test.xyz");
+ } catch (MalformedURLException e) {
+ throw new RuntimeException(e);
+ }
+
+ cssParser.parseStyleElement(ac, input, title, "all", url, lineno);
+
+ StyleSheet styleSheet = cssParser.getStyleSheet();
+
+ // find conflicts
+ styleSheet.findConflicts(ac);
+
+ boolean valid = true;
+ StringBuilder sb = new StringBuilder().append("CSS:");
+
+ // look for errors
+ Errors errors = styleSheet.getErrors();
+ if (errors.getErrorCount() != 0) {
+ valid = false;
+ CssError[] cssErrors = errors.getErrors();
+ for (CssError cssError : cssErrors) {
+ Exception exception = cssError.getException();
+ sb.append(" ");
+ sb.append(exception.getMessage());
+ }
+ }
+
+ // look for warnings
+ Warnings warnings = styleSheet.getWarnings();
+ if (warnings.getWarningCount() != 0) {
+ valid = false;
+ Warning[] cssWarnings = warnings.getWarnings();
+ for (Warning warning : cssWarnings) {
+ sb.append(" ");
+ sb.append(warning.getWarningMessage());
+ }
+ }
+
+ if (!valid) {
+ throw new ValidationException(sb.toString());
+ }
+
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBackgroundColorSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBackgroundColorSLXHTML.java
new file mode 100644
index 00000000..53191d17
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBackgroundColorSLXHTML.java
@@ -0,0 +1,57 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssBackgroundColorCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+public class CssBackgroundColorSLXHTML extends CssBackgroundColorCSS2 {
+
+ public CssBackgroundColorSLXHTML() {
+ }
+
+ public CssBackgroundColorSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // A Citizen Card Environment must support all the options for specifying a
+ // colour listed in [CSS 2], section 4.3.6 for a CSS property, if such an
+ // option is available for this property according to [CSS 2].
+
+ // The exceptions are the system colours (cf. [CSS 2], section 18.2); these
+ // must not be used in an instance document so as to prevent dependencies on
+ // the system environment. Otherwise the instance document must be rejected
+ // by the Citizen Card Environment.
+
+ CssValue color = getColor();
+ if (!isSoftlyInherited() && color != null) {
+ if (CssColorSLXHTML.isDisallowedColor(color)) {
+ throw new SLXHTMLInvalidParamException("color", color, getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssBackgroundColorSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ super(ac, expression);
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBackgroundSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBackgroundSLXHTML.java
new file mode 100644
index 00000000..724c8c6a
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBackgroundSLXHTML.java
@@ -0,0 +1,93 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+/**
+ *
+ */
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssBackgroundCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @author mcentner
+ *
+ */
+public class CssBackgroundSLXHTML extends CssBackgroundCSS2 {
+
+ public CssBackgroundSLXHTML() {
+ }
+
+ public CssBackgroundSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // A Citizen Card Environment must support all the options for specifying a
+ // colour listed in [CSS 2], section 4.3.6 for a CSS property, if such an
+ // option is available for this property according to [CSS 2].
+
+ // The exceptions are the system colours (cf. [CSS 2], section 18.2); these
+ // must not be used in an instance document so as to prevent dependencies on
+ // the system environment. Otherwise the instance document must be rejected
+ // by the Citizen Card Environment.
+
+ CssValue color = getColor();
+ if (!isSoftlyInherited() && color != null) {
+ if (CssColorSLXHTML.isDisallowedColor(color)) {
+ throw new SLXHTMLInvalidParamException("color", color, getPropertyName(), ac);
+ }
+ }
+
+ // The properties for selecting and controlling an image as background
+ // (background-image, background-repeat, background-position,
+ // background-attachment; cf. [CSS 2], section 14.2.1) must not be contained
+ // in an instance document to prevent content from overlapping. Otherwise
+ // the instance document must be rejected by the Citizen Card Environment.
+ //
+ // The property for the shorthand version of the background properties
+ // (background) should be supported by a Citizen Card Environment. The
+ // recommended values result from the explanations for the background-color
+ // property above (cf. [CSS 2], section 14.2.1). If the property contains
+ // values for selecting and controlling an image as background, the instance
+ // document must be rejected by the Citizen Card Environment.
+
+ if (getImage() != null) {
+ throw new SLXHTMLInvalidParamException("background", "background-image", ac);
+ }
+
+ if (getRepeat() != null) {
+ throw new SLXHTMLInvalidParamException("background", "background-repeat", ac);
+ }
+
+ if (getPosition() != null) {
+ throw new SLXHTMLInvalidParamException("background", "background-position", ac);
+ }
+
+ if (getAttachment() != null) {
+ throw new SLXHTMLInvalidParamException("background", "background-attachment", ac);
+ }
+
+ }
+
+ public CssBackgroundSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderBottomColorSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderBottomColorSLXHTML.java
new file mode 100644
index 00000000..4f5798b0
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderBottomColorSLXHTML.java
@@ -0,0 +1,57 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssBorderBottomColorCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+public class CssBorderBottomColorSLXHTML extends CssBorderBottomColorCSS2 {
+
+ public CssBorderBottomColorSLXHTML() {
+ }
+
+ public CssBorderBottomColorSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // A Citizen Card Environment must support all the options for specifying a
+ // colour listed in [CSS 2], section 4.3.6 for a CSS property, if such an
+ // option is available for this property according to [CSS 2].
+
+ // The exceptions are the system colours (cf. [CSS 2], section 18.2); these
+ // must not be used in an instance document so as to prevent dependencies on
+ // the system environment. Otherwise the instance document must be rejected
+ // by the Citizen Card Environment.
+
+ CssValue color = getColor();
+ if (!isSoftlyInherited() && color != null) {
+ if (CssColorSLXHTML.isDisallowedColor(color)) {
+ throw new SLXHTMLInvalidParamException("color", color, getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssBorderBottomColorSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderColorSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderColorSLXHTML.java
new file mode 100644
index 00000000..3f5a7319
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderColorSLXHTML.java
@@ -0,0 +1,81 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssBorderBottomColorCSS2;
+import org.w3c.css.properties.css1.CssBorderColorCSS2;
+import org.w3c.css.properties.css1.CssBorderLeftColorCSS2;
+import org.w3c.css.properties.css1.CssBorderRightColorCSS2;
+import org.w3c.css.properties.css1.CssBorderTopColorCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+public class CssBorderColorSLXHTML extends CssBorderColorCSS2 {
+
+ public CssBorderColorSLXHTML() {
+ }
+
+ public CssBorderColorSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // A Citizen Card Environment must support all the options for specifying a
+ // colour listed in [CSS 2], section 4.3.6 for a CSS property, if such an
+ // option is available for this property according to [CSS 2].
+
+ // The exceptions are the system colours (cf. [CSS 2], section 18.2); these
+ // must not be used in an instance document so as to prevent dependencies on
+ // the system environment. Otherwise the instance document must be rejected
+ // by the Citizen Card Environment.
+
+ CssBorderTopColorCSS2 top = getTop();
+ if (!isSoftlyInherited() && top != null) {
+ if (CssColorSLXHTML.isDisallowedColor(top.getColor())) {
+ throw new SLXHTMLInvalidParamException("color", top.getColor(), getPropertyName(), ac);
+ }
+ }
+
+ CssBorderLeftColorCSS2 left = getLeft();
+ if (!isSoftlyInherited() && left != null) {
+ if (CssColorSLXHTML.isDisallowedColor(left.getColor())) {
+ throw new SLXHTMLInvalidParamException("color", left.getColor(), getPropertyName(), ac);
+ }
+ }
+
+ CssBorderRightColorCSS2 right = getRight();
+ if (!isSoftlyInherited() && right != null) {
+ if (CssColorSLXHTML.isDisallowedColor(right.getColor())) {
+ throw new SLXHTMLInvalidParamException("color", right.getColor(), getPropertyName(), ac);
+ }
+ }
+
+ CssBorderBottomColorCSS2 bottom = getBottom();
+ if (!isSoftlyInherited() && bottom != null) {
+ if (CssColorSLXHTML.isDisallowedColor(bottom.getColor())) {
+ throw new SLXHTMLInvalidParamException("color", bottom.getColor(), getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssBorderColorSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderLeftColorSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderLeftColorSLXHTML.java
new file mode 100644
index 00000000..e2378e99
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderLeftColorSLXHTML.java
@@ -0,0 +1,57 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssBorderLeftColorCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+public class CssBorderLeftColorSLXHTML extends CssBorderLeftColorCSS2 {
+
+ public CssBorderLeftColorSLXHTML() {
+ }
+
+ public CssBorderLeftColorSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // A Citizen Card Environment must support all the options for specifying a
+ // colour listed in [CSS 2], section 4.3.6 for a CSS property, if such an
+ // option is available for this property according to [CSS 2].
+
+ // The exceptions are the system colours (cf. [CSS 2], section 18.2); these
+ // must not be used in an instance document so as to prevent dependencies on
+ // the system environment. Otherwise the instance document must be rejected
+ // by the Citizen Card Environment.
+
+ CssValue color = getColor();
+ if (!isSoftlyInherited() && color != null) {
+ if (CssColorSLXHTML.isDisallowedColor(color)) {
+ throw new SLXHTMLInvalidParamException("color", color, getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssBorderLeftColorSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderRightColorSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderRightColorSLXHTML.java
new file mode 100644
index 00000000..99d6bae5
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderRightColorSLXHTML.java
@@ -0,0 +1,57 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssBorderRightColorCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+public class CssBorderRightColorSLXHTML extends CssBorderRightColorCSS2 {
+
+ public CssBorderRightColorSLXHTML() {
+ }
+
+ public CssBorderRightColorSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // A Citizen Card Environment must support all the options for specifying a
+ // colour listed in [CSS 2], section 4.3.6 for a CSS property, if such an
+ // option is available for this property according to [CSS 2].
+
+ // The exceptions are the system colours (cf. [CSS 2], section 18.2); these
+ // must not be used in an instance document so as to prevent dependencies on
+ // the system environment. Otherwise the instance document must be rejected
+ // by the Citizen Card Environment.
+
+ CssValue color = getColor();
+ if (!isSoftlyInherited() && color != null) {
+ if (CssColorSLXHTML.isDisallowedColor(color)) {
+ throw new SLXHTMLInvalidParamException("color", color, getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssBorderRightColorSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderSLXHTML.java
new file mode 100644
index 00000000..ac32670e
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderSLXHTML.java
@@ -0,0 +1,85 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssBorderCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+public class CssBorderSLXHTML extends CssBorderCSS2 {
+
+ public CssBorderSLXHTML() {
+ }
+
+ public CssBorderSLXHTML(ApplContext ac, CssExpression value, boolean check)
+ throws InvalidParamException {
+ super(ac, value, check);
+
+ // A Citizen Card Environment must support all the options for specifying a
+ // colour listed in [CSS 2], section 4.3.6 for a CSS property, if such an
+ // option is available for this property according to [CSS 2].
+
+ // The exceptions are the system colours (cf. [CSS 2], section 18.2); these
+ // must not be used in an instance document so as to prevent dependencies on
+ // the system environment. Otherwise the instance document must be rejected
+ // by the Citizen Card Environment.
+
+ if (getTop() != null) {
+ CssValue top = getTop().getColor();
+ if (!isSoftlyInherited() && top != null) {
+ if (CssColorSLXHTML.isDisallowedColor(top)) {
+ throw new SLXHTMLInvalidParamException("color", top, getPropertyName(), ac);
+ }
+ }
+ }
+
+ if (getLeft() != null) {
+ CssValue left = getLeft().getColor();
+ if (!isSoftlyInherited() && left != null) {
+ if (CssColorSLXHTML.isDisallowedColor(left)) {
+ throw new SLXHTMLInvalidParamException("color", left, getPropertyName(), ac);
+ }
+ }
+ }
+
+ if (getRight() != null) {
+ CssValue right = getRight().getColor();
+ if (!isSoftlyInherited() && right != null) {
+ if (CssColorSLXHTML.isDisallowedColor(right)) {
+ throw new SLXHTMLInvalidParamException("color", right, getPropertyName(), ac);
+ }
+ }
+ }
+
+ if (getBottom() != null) {
+ CssValue bottom = getBottom().getColor();
+ if (!isSoftlyInherited() && bottom != null) {
+ if (CssColorSLXHTML.isDisallowedColor(bottom)) {
+ throw new SLXHTMLInvalidParamException("color", bottom, getPropertyName(), ac);
+ }
+ }
+ }
+ }
+
+ public CssBorderSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderTopColorSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderTopColorSLXHTML.java
new file mode 100644
index 00000000..42926479
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderTopColorSLXHTML.java
@@ -0,0 +1,57 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssBorderTopColorCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+public class CssBorderTopColorSLXHTML extends CssBorderTopColorCSS2 {
+
+ public CssBorderTopColorSLXHTML() {
+ }
+
+ public CssBorderTopColorSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // A Citizen Card Environment must support all the options for specifying a
+ // colour listed in [CSS 2], section 4.3.6 for a CSS property, if such an
+ // option is available for this property according to [CSS 2].
+
+ // The exceptions are the system colours (cf. [CSS 2], section 18.2); these
+ // must not be used in an instance document so as to prevent dependencies on
+ // the system environment. Otherwise the instance document must be rejected
+ // by the Citizen Card Environment.
+
+ CssValue color = getColor();
+ if (!isSoftlyInherited() && color != null) {
+ if (CssColorSLXHTML.isDisallowedColor(color)) {
+ throw new SLXHTMLInvalidParamException("color", color, getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssBorderTopColorSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssColorSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssColorSLXHTML.java
new file mode 100644
index 00000000..a640eb3a
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssColorSLXHTML.java
@@ -0,0 +1,99 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+public class CssColorSLXHTML extends org.w3c.css.properties.css1.CssColorCSS2 {
+
+ private static Set<String> SLXHTML_DISSALLOWED_COLORS = new HashSet<String>();
+
+ static {
+
+ SLXHTML_DISSALLOWED_COLORS.add("activeborder");
+ SLXHTML_DISSALLOWED_COLORS.add("activecaption");
+ SLXHTML_DISSALLOWED_COLORS.add("appworkspace");
+ SLXHTML_DISSALLOWED_COLORS.add("background");
+ SLXHTML_DISSALLOWED_COLORS.add("buttonface");
+ SLXHTML_DISSALLOWED_COLORS.add("buttonhighlight");
+ SLXHTML_DISSALLOWED_COLORS.add("buttonshadow");
+ SLXHTML_DISSALLOWED_COLORS.add("buttontext");
+ SLXHTML_DISSALLOWED_COLORS.add("captiontext");
+ SLXHTML_DISSALLOWED_COLORS.add("graytext");
+ SLXHTML_DISSALLOWED_COLORS.add("highlight");
+ SLXHTML_DISSALLOWED_COLORS.add("highlighttext");
+ SLXHTML_DISSALLOWED_COLORS.add("inactiveborder");
+ SLXHTML_DISSALLOWED_COLORS.add("inactivecaption");
+ SLXHTML_DISSALLOWED_COLORS.add("inactivecaptiontext");
+ SLXHTML_DISSALLOWED_COLORS.add("infobackground");
+ SLXHTML_DISSALLOWED_COLORS.add("infotext");
+ SLXHTML_DISSALLOWED_COLORS.add("menu");
+ SLXHTML_DISSALLOWED_COLORS.add("menutext");
+ SLXHTML_DISSALLOWED_COLORS.add("scrollbar");
+ SLXHTML_DISSALLOWED_COLORS.add("threeddarkshadow");
+ SLXHTML_DISSALLOWED_COLORS.add("threedface");
+ SLXHTML_DISSALLOWED_COLORS.add("threedhighlight");
+ SLXHTML_DISSALLOWED_COLORS.add("threedlightshadow");
+ SLXHTML_DISSALLOWED_COLORS.add("threedshadow");
+ SLXHTML_DISSALLOWED_COLORS.add("window");
+ SLXHTML_DISSALLOWED_COLORS.add("windowframe");
+ SLXHTML_DISSALLOWED_COLORS.add("windowtext");
+
+ }
+
+ public static boolean isDisallowedColor(CssValue cssValue) {
+ return SLXHTML_DISSALLOWED_COLORS.contains(cssValue.toString().toLowerCase());
+ }
+
+ public CssColorSLXHTML() {
+ }
+
+ public CssColorSLXHTML(ApplContext ac, CssExpression expression, boolean check)
+ throws InvalidParamException {
+
+ super(ac, expression, check);
+
+ // A Citizen Card Environment must support all the options for specifying a
+ // colour listed in [CSS 2], section 4.3.6 for a CSS property, if such an
+ // option is available for this property according to [CSS 2].
+
+ // The exceptions are the system colours (cf. [CSS 2], section 18.2); these
+ // must not be used in an instance document so as to prevent dependencies on
+ // the system environment. Otherwise the instance document must be rejected
+ // by the Citizen Card Environment.
+
+ CssValue color = getColor();
+ if (!isSoftlyInherited() && color != null) {
+ if (CssColorSLXHTML.isDisallowedColor(color)) {
+ throw new SLXHTMLInvalidParamException("color", color, getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssColorSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssFontSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssFontSLXHTML.java
new file mode 100644
index 00000000..8e5298ec
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssFontSLXHTML.java
@@ -0,0 +1,59 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssFontCSS2;
+import org.w3c.css.properties.css1.CssFontConstantCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssValue;
+
+public class CssFontSLXHTML extends CssFontCSS2 {
+
+ public CssFontSLXHTML() {
+ }
+
+ public CssFontSLXHTML(ApplContext ac, CssExpression expression, boolean check)
+ throws InvalidParamException {
+ super(ac, checkExpression(expression, ac), check);
+ }
+
+ public CssFontSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+ protected static CssExpression checkExpression(CssExpression expression,
+ ApplContext ac) throws InvalidParamException {
+
+ CssValue value = expression.getValue();
+
+ if (value instanceof CssIdent) {
+ for (String font : CssFontConstantCSS2.FONT) {
+ if (font.equalsIgnoreCase(value.toString())) {
+ throw new SLXHTMLInvalidParamException("font", value.toString(), ac);
+ }
+ }
+ }
+
+ return expression;
+
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssLetterSpacingSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssLetterSpacingSLXHTML.java
new file mode 100644
index 00000000..326a731f
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssLetterSpacingSLXHTML.java
@@ -0,0 +1,54 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssLetterSpacing;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssLength;
+import org.w3c.css.values.CssNumber;
+
+public class CssLetterSpacingSLXHTML extends CssLetterSpacing {
+
+ public CssLetterSpacingSLXHTML() {
+ }
+
+ public CssLetterSpacingSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ Object value = get();
+ if (value instanceof CssLength) {
+ Object length = ((CssLength) value).get();
+ if (length instanceof Float && ((Float) length).floatValue() < 0) {
+ throw new SLXHTMLInvalidParamException("spacing", length, getPropertyName(), ac);
+ }
+ } else if (value instanceof CssNumber) {
+ if (((CssNumber) value).getValue() < 0) {
+ throw new SLXHTMLInvalidParamException("spacing", value, getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssLetterSpacingSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginBottomSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginBottomSLXHTML.java
new file mode 100644
index 00000000..cac97d06
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginBottomSLXHTML.java
@@ -0,0 +1,60 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssMarginBottom;
+import org.w3c.css.properties.css1.CssMarginSide;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+public class CssMarginBottomSLXHTML extends CssMarginBottom {
+
+ public CssMarginBottomSLXHTML() {
+ }
+
+ public CssMarginBottomSLXHTML(CssMarginSide another) {
+ super(another);
+ }
+
+ public CssMarginBottomSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+ public CssMarginBottomSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // The margin-top, margin-bottom, margin-left and margin-right properties
+ // must be supported by a Citizen Card Environment. Values specified as
+ // percentages (cf. section 3.5.1.2) should be supported.
+
+ // The margin property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (CssMarginSLXHTML.isDisallowedMargin(getValue())) {
+ throw new SLXHTMLInvalidParamException("margin", getValue(),
+ getPropertyName(), ac);
+ }
+
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginLeftSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginLeftSLXHTML.java
new file mode 100644
index 00000000..c456af43
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginLeftSLXHTML.java
@@ -0,0 +1,61 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssMarginLeft;
+import org.w3c.css.properties.css1.CssMarginSide;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+public class CssMarginLeftSLXHTML extends CssMarginLeft {
+
+ public CssMarginLeftSLXHTML() {
+ }
+
+ public CssMarginLeftSLXHTML(CssMarginSide another) {
+ super(another);
+ }
+
+ public CssMarginLeftSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+ public CssMarginLeftSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // TODO Auto-generated constructor stub
+ // The margin-top, margin-bottom, margin-left and margin-right properties
+ // must be supported by a Citizen Card Environment. Values specified as
+ // percentages (cf. section 3.5.1.2) should be supported.
+
+ // The margin property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (CssMarginSLXHTML.isDisallowedMargin(getValue())) {
+ throw new SLXHTMLInvalidParamException("margin", getValue(),
+ getPropertyName(), ac);
+ }
+
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginRightSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginRightSLXHTML.java
new file mode 100644
index 00000000..7f16830d
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginRightSLXHTML.java
@@ -0,0 +1,60 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssMarginRight;
+import org.w3c.css.properties.css1.CssMarginSide;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+public class CssMarginRightSLXHTML extends CssMarginRight {
+
+ public CssMarginRightSLXHTML() {
+ }
+
+ public CssMarginRightSLXHTML(CssMarginSide another) {
+ super(another);
+ }
+
+ public CssMarginRightSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+ public CssMarginRightSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // The margin-top, margin-bottom, margin-left and margin-right properties
+ // must be supported by a Citizen Card Environment. Values specified as
+ // percentages (cf. section 3.5.1.2) should be supported.
+
+ // The margin property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (CssMarginSLXHTML.isDisallowedMargin(getValue())) {
+ throw new SLXHTMLInvalidParamException("margin", getValue(),
+ getPropertyName(), ac);
+ }
+
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginSLXHTML.java
new file mode 100644
index 00000000..f478b96a
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginSLXHTML.java
@@ -0,0 +1,101 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssMargin;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+public class CssMarginSLXHTML extends CssMargin {
+
+ public CssMarginSLXHTML() {
+ }
+
+ public CssMarginSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ if (getTop() != null) {
+ if (isDisallowedMargin(getTop().getValue())) {
+ throw new SLXHTMLInvalidParamException("margin", getTop().getValue(),
+ getPropertyName(), ac);
+ }
+ }
+
+ if (getRight() != null) {
+ if (isDisallowedMargin(getRight().getValue())) {
+ throw new SLXHTMLInvalidParamException("margin", getRight().getValue(),
+ getPropertyName(), ac);
+ }
+ }
+
+ if (getLeft() != null) {
+ if (isDisallowedMargin(getLeft().getValue())) {
+ throw new SLXHTMLInvalidParamException("margin", getLeft().getValue(),
+ getPropertyName(), ac);
+ }
+ }
+
+ if (getBottom() != null) {
+ if (isDisallowedMargin(getBottom().getValue())) {
+ throw new SLXHTMLInvalidParamException("margin", getBottom().getValue(),
+ getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssMarginSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+ public static boolean isDisallowedMargin(CssValue margin) {
+
+ // The margin-top, margin-bottom, margin-left and margin-right properties
+ // must be supported by a Citizen Card Environment. Values specified as
+ // percentages (cf. section 3.5.1.2) should be supported.
+
+ // The margin property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (margin instanceof CssLength) {
+ Object value = ((CssLength) margin).get();
+ if (value instanceof Float) {
+ return ((Float) value).floatValue() < 0;
+ }
+ } else if (margin instanceof CssPercentage) {
+ Object value = ((CssPercentage) margin).get();
+ if (value instanceof Float) {
+ return ((Float) value).floatValue() < 0;
+ }
+ } else if (margin instanceof CssNumber) {
+ return ((CssNumber) margin).getValue() < 0;
+ }
+
+ return false;
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginTopSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginTopSLXHTML.java
new file mode 100644
index 00000000..06b30c4f
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginTopSLXHTML.java
@@ -0,0 +1,61 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssMarginSide;
+import org.w3c.css.properties.css1.CssMarginTop;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+public class CssMarginTopSLXHTML extends CssMarginTop {
+
+ public CssMarginTopSLXHTML() {
+ }
+
+ public CssMarginTopSLXHTML(CssMarginSide another) {
+ super(another);
+ }
+
+ public CssMarginTopSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+
+ }
+
+ public CssMarginTopSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // The margin-top, margin-bottom, margin-left and margin-right properties
+ // must be supported by a Citizen Card Environment. Values specified as
+ // percentages (cf. section 3.5.1.2) should be supported.
+
+ // The margin property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (CssMarginSLXHTML.isDisallowedMargin(getValue())) {
+ throw new SLXHTMLInvalidParamException("margin", getValue(),
+ getPropertyName(), ac);
+ }
+
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingBottomSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingBottomSLXHTML.java
new file mode 100644
index 00000000..4bcb0065
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingBottomSLXHTML.java
@@ -0,0 +1,60 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssPaddingBottom;
+import org.w3c.css.properties.css1.CssPaddingSide;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+public class CssPaddingBottomSLXHTML extends CssPaddingBottom {
+
+ public CssPaddingBottomSLXHTML() {
+ }
+
+ public CssPaddingBottomSLXHTML(CssPaddingSide another) {
+ super(another);
+ }
+
+ public CssPaddingBottomSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // The padding-top, padding-bottom, padding-left and padding-right
+ // properties must be supported by a Citizen Card Environment. Values
+ // specified as percentages (cf. section 3.5.1.2) should be supported.
+
+ // The padding property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (CssPaddingSLXHTML.isDisallowedValue(getValue())) {
+ throw new SLXHTMLInvalidParamException("padding", getValue(),
+ getPropertyName(), ac);
+ }
+
+ }
+
+ public CssPaddingBottomSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingLeftSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingLeftSLXHTML.java
new file mode 100644
index 00000000..350a5c15
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingLeftSLXHTML.java
@@ -0,0 +1,60 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssPaddingLeft;
+import org.w3c.css.properties.css1.CssPaddingSide;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+public class CssPaddingLeftSLXHTML extends CssPaddingLeft {
+
+ public CssPaddingLeftSLXHTML() {
+ }
+
+ public CssPaddingLeftSLXHTML(CssPaddingSide another) {
+ super(another);
+ }
+
+ public CssPaddingLeftSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // The padding-top, padding-bottom, padding-left and padding-right
+ // properties must be supported by a Citizen Card Environment. Values
+ // specified as percentages (cf. section 3.5.1.2) should be supported.
+
+ // The padding property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (CssPaddingSLXHTML.isDisallowedValue(getValue())) {
+ throw new SLXHTMLInvalidParamException("padding", getValue(),
+ getPropertyName(), ac);
+ }
+
+ }
+
+ public CssPaddingLeftSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingRightSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingRightSLXHTML.java
new file mode 100644
index 00000000..d2d62748
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingRightSLXHTML.java
@@ -0,0 +1,60 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssPaddingRight;
+import org.w3c.css.properties.css1.CssPaddingSide;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+public class CssPaddingRightSLXHTML extends CssPaddingRight {
+
+ public CssPaddingRightSLXHTML() {
+ }
+
+ public CssPaddingRightSLXHTML(CssPaddingSide another) {
+ super(another);
+ }
+
+ public CssPaddingRightSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // The padding-top, padding-bottom, padding-left and padding-right
+ // properties must be supported by a Citizen Card Environment. Values
+ // specified as percentages (cf. section 3.5.1.2) should be supported.
+
+ // The padding property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (CssPaddingSLXHTML.isDisallowedValue(getValue())) {
+ throw new SLXHTMLInvalidParamException("padding", getValue(),
+ getPropertyName(), ac);
+ }
+
+ }
+
+ public CssPaddingRightSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingSLXHTML.java
new file mode 100644
index 00000000..57d7cf77
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingSLXHTML.java
@@ -0,0 +1,102 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssPadding;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+public class CssPaddingSLXHTML extends CssPadding {
+
+ public CssPaddingSLXHTML() {
+ }
+
+ public CssPaddingSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ if (getTop() != null) {
+ if (isDisallowedValue(getTop().getValue())) {
+ throw new SLXHTMLInvalidParamException("padding", getTop().getValue(),
+ getPropertyName(), ac);
+ }
+ }
+
+ if (getRight() != null) {
+ if (isDisallowedValue(getRight().getValue())) {
+ throw new SLXHTMLInvalidParamException("padding", getRight().getValue(),
+ getPropertyName(), ac);
+ }
+ }
+
+ if (getLeft() != null) {
+ if (isDisallowedValue(getLeft().getValue())) {
+ throw new SLXHTMLInvalidParamException("padding", getLeft().getValue(),
+ getPropertyName(), ac);
+ }
+ }
+
+ if (getBottom() != null) {
+ if (isDisallowedValue(getBottom().getValue())) {
+ throw new SLXHTMLInvalidParamException("padding", getBottom().getValue(),
+ getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssPaddingSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+ public static boolean isDisallowedValue(CssValue padding) {
+
+ // The padding-top, padding-bottom, padding-left and padding-right
+ // properties must be supported by a Citizen Card Environment. Values
+ // specified as percentages (cf. section 3.5.1.2) should be supported.
+
+ // The padding property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (padding instanceof CssLength) {
+ Object value = ((CssLength) padding).get();
+ if (value instanceof Float) {
+ return ((Float) value).floatValue() < 0;
+ }
+ } else if (padding instanceof CssPercentage) {
+ Object value = ((CssPercentage) padding).get();
+ if (value instanceof Float) {
+ return ((Float) value).floatValue() < 0;
+ }
+ } else if (padding instanceof CssNumber) {
+ return ((CssNumber) padding).getValue() < 0;
+ }
+
+ return false;
+
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingTopSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingTopSLXHTML.java
new file mode 100644
index 00000000..bc113bfe
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingTopSLXHTML.java
@@ -0,0 +1,61 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssPaddingSide;
+import org.w3c.css.properties.css1.CssPaddingTop;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+public class CssPaddingTopSLXHTML extends CssPaddingTop {
+
+ public CssPaddingTopSLXHTML() {
+ }
+
+ public CssPaddingTopSLXHTML(CssPaddingSide another) {
+ super(another);
+ }
+
+ public CssPaddingTopSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // The padding-top, padding-bottom, padding-left and padding-right
+ // properties must be supported by a Citizen Card Environment. Values
+ // specified as percentages (cf. section 3.5.1.2) should be supported.
+
+ // The padding property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (CssPaddingSLXHTML.isDisallowedValue(getValue())) {
+ throw new SLXHTMLInvalidParamException("padding", getValue(),
+ getPropertyName(), ac);
+ }
+
+ }
+
+ public CssPaddingTopSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ super(ac, expression);
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssTextDecorationSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssTextDecorationSLXHTML.java
new file mode 100644
index 00000000..16b9780a
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssTextDecorationSLXHTML.java
@@ -0,0 +1,51 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssTextDecoration;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+public class CssTextDecorationSLXHTML extends CssTextDecoration {
+
+ public CssTextDecorationSLXHTML() {
+ }
+
+ public CssTextDecorationSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ if (get() instanceof CssValue) {
+ if ("blink".equalsIgnoreCase(((CssValue) get()).toString())) {
+ throw new SLXHTMLInvalidParamException("text-decoration", "blink", ac);
+ }
+ } else if (get() instanceof String) {
+ if ("blink".equalsIgnoreCase((String) get())) {
+ throw new SLXHTMLInvalidParamException("text-decoration", "blink", ac);
+ }
+ }
+
+ }
+
+ public CssTextDecorationSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssWordSpacingSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssWordSpacingSLXHTML.java
new file mode 100644
index 00000000..a497f4e3
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssWordSpacingSLXHTML.java
@@ -0,0 +1,54 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssWordSpacing;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssLength;
+import org.w3c.css.values.CssNumber;
+
+public class CssWordSpacingSLXHTML extends CssWordSpacing {
+
+ public CssWordSpacingSLXHTML() {
+ }
+
+ public CssWordSpacingSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ Object value = get();
+ if (value instanceof CssLength) {
+ Object length = ((CssLength) value).get();
+ if (length instanceof Float && ((Float) length).floatValue() < 0) {
+ throw new SLXHTMLInvalidParamException("spacing", length, getPropertyName(), ac);
+ }
+ } else if (value instanceof CssNumber) {
+ if (((CssNumber) value).getValue() < 0) {
+ throw new SLXHTMLInvalidParamException("spacing", value, getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssWordSpacingSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/SLXHTMLInvalidParamException.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/SLXHTMLInvalidParamException.java
new file mode 100644
index 00000000..edac03f4
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/SLXHTMLInvalidParamException.java
@@ -0,0 +1,71 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import java.text.MessageFormat;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.w3c.css.util.ApplContext;
+
+public class SLXHTMLInvalidParamException extends
+ org.w3c.css.util.InvalidParamException {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String message;
+
+ public SLXHTMLInvalidParamException() {
+ }
+
+ public SLXHTMLInvalidParamException(String error, ApplContext ac) {
+ setMessage(error, null, ac);
+ }
+
+ public SLXHTMLInvalidParamException(String error, Object message, ApplContext ac) {
+ setMessage(error, new Object[] {message}, ac);
+ }
+
+ public SLXHTMLInvalidParamException(String error, Object message1, Object message2,
+ ApplContext ac) {
+ setMessage(error, new Object[] {message1, message2}, ac);
+ }
+
+ @Override
+ public String getMessage() {
+ return getLocalizedMessage();
+ }
+
+ @Override
+ public String getLocalizedMessage() {
+ return message;
+ }
+
+ protected void setMessage(String error, Object[] arguments, ApplContext ac) {
+ Locale locale = new Locale(ac.getContentLanguage());
+ ResourceBundle bundle = ResourceBundle.getBundle("at/gv/egiz/bku/slxhtml/css/Messages", locale);
+ String pattern;
+ try {
+ pattern = bundle.getString(error);
+ } catch (MissingResourceException e) {
+ pattern = "Can't find error message for : " + error;
+ }
+ message = MessageFormat.format(pattern, arguments);
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/SLXHTMLStyle.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/SLXHTMLStyle.java
new file mode 100644
index 00000000..99448ec4
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/SLXHTMLStyle.java
@@ -0,0 +1,22 @@
+//
+// $Id: Css2Style.java,v 1.2 2005-09-08 12:24:01 ylafon Exp $
+// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
+//
+// (c) COPYRIGHT MIT and INRIA, 1997.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.aural.ACssStyle;
+import org.w3c.css.parser.CssPrinterStyle;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class SLXHTMLStyle extends ACssStyle {
+
+ public void print(CssPrinterStyle printer) {
+ super.print(printer);
+ }
+
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/TableLayoutSLXHTML.java b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/TableLayoutSLXHTML.java
new file mode 100644
index 00000000..50f30cce
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/TableLayoutSLXHTML.java
@@ -0,0 +1,45 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.css2.table.TableLayout;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+
+public class TableLayoutSLXHTML extends TableLayout {
+
+ public TableLayoutSLXHTML() {
+ }
+
+ public TableLayoutSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ if (new CssIdent("fixed").equals(get())) {
+ throw new SLXHTMLInvalidParamException("table-layout", "fixed", getPropertyName(), ac);
+ }
+
+ }
+
+ public TableLayoutSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/BKUViewer/src/main/java/at/gv/egiz/bku/text/TextValidator.java b/BKUViewer/src/main/java/at/gv/egiz/bku/text/TextValidator.java
new file mode 100644
index 00000000..5108140d
--- /dev/null
+++ b/BKUViewer/src/main/java/at/gv/egiz/bku/text/TextValidator.java
@@ -0,0 +1,32 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.text;
+
+import java.io.InputStream;
+
+import at.gv.egiz.bku.viewer.ValidationException;
+import at.gv.egiz.bku.viewer.Validator;
+
+public class TextValidator implements Validator {
+
+ @Override
+ public void validate(InputStream is, String charset)
+ throws ValidationException {
+ // TODO: implement character validation
+ }
+
+}
diff --git a/BKUViewer/src/main/resources/META-INF/services/at.gv.egiz.bku.viewer.Validator b/BKUViewer/src/main/resources/META-INF/services/at.gv.egiz.bku.viewer.Validator
new file mode 100644
index 00000000..0004949b
--- /dev/null
+++ b/BKUViewer/src/main/resources/META-INF/services/at.gv.egiz.bku.viewer.Validator
@@ -0,0 +1,2 @@
+application/xhtml+xml at.gv.egiz.bku.slxhtml.SLXHTMLValidator
+text/plain at.gv.egiz.bku.text.TextValidator \ No newline at end of file
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml-model-1.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml-model-1.xsd
new file mode 100644
index 00000000..89e91faa
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml-model-1.xsd
@@ -0,0 +1,469 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/">
+ <xs:import
+ namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd"/>
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema module of common content models for SLXHTML.
+ SLXHTML is a profile of XHTML (see W3C copyright notice below).
+
+ @author: Gregor Karlinger gregor.karlinger@cio.gv.at
+ $Id: slxhtml-model-1.xsd,v 1.4 2004/05/12 11:35:31 karlinger Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ XHTML Document Model
+ This module describes the groupings of elements/attributes
+ that make up common content models for XHTML elements.
+ XHTML has following basic content models:
+ xhtml.Inline.mix; character-level elements
+ xhtml.Block.mix; block-like elements, e.g., paragraphs and lists
+ xhtml.Flow.mix; any block or inline elements
+ xhtml.HeadOpts.mix; Head Elements
+ xhtml.InlinePre.mix; Special class for pre content model
+ xhtml.InlineNoAnchor.mix; Content model for Anchor
+
+ Any groups declared in this module may be used to create
+ element content models, but the above are considered 'global'
+ (insofar as that term applies here). XHTML has the
+ following Attribute Groups
+ xhtml.Core.extra.attrib
+ xhtml.I18n.extra.attrib
+ xhtml.Common.extra
+
+ The above attribute Groups are considered Global
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:attributeGroup name="xhtml.I18n.extra.attrib">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: attributeGroup "dir.attrib" removed.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.Common.extra">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: attributeGroup "style.attrib" removed.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.Core.extra.attrib">
+ </xs:attributeGroup>
+
+ <xs:attributeGroup
+ name="xhtml.Global.core.extra.attrib">
+ <xs:annotation>
+ <xs:documentation> Extended Global Core Attributes </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+ <xs:attributeGroup
+ name="xhtml.Global.I18n.extra.attrib">
+ <xs:annotation>
+ <xs:documentation> Extended Global I18n attributes </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+ <xs:attributeGroup
+ name="xhtml.Global.Common.extra">
+ <xs:annotation>
+ <xs:documentation> Extended Global Common Attributes </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+
+ <xs:group name="xhtml.HeadOpts.mix">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: elements "script", "meta", "link", "object" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element
+ name="style"
+ type="xhtml.style.type"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.head.content">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: Only a single instance of element "style" is
+ allowed apart from the obligatory "title" element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element
+ name="title"
+ type="xhtml.title.type"/>
+ <xs:group
+ ref="xhtml.HeadOpts.mix"/>
+ </xs:sequence>
+ </xs:group>
+ <!--
+ ins and del are used to denote editing changes
+ -->
+ <xs:group name="xhtml.Edit.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: elements "ins", "del" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice/>
+ </xs:group>
+ <!--
+ script and noscript are used to contain scripts
+ and alternative content
+ -->
+ <xs:group name="xhtml.Script.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: elements "script", "noscript" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice/>
+ </xs:group>
+ <xs:group name="xhtml.Misc.extra">
+ <xs:sequence/>
+ </xs:group>
+ <!--
+ These elements are neither block nor inline, and can
+ essentially be used anywhere in the document body.
+ -->
+ <xs:group
+ name="xhtml.Misc.class">
+ <xs:choice>
+ <xs:group
+ ref="xhtml.Edit.class"/>
+ <xs:group
+ ref="xhtml.Script.class"/>
+ <xs:group
+ ref="xhtml.Misc.extra"/>
+ </xs:choice>
+ </xs:group>
+ <!-- Inline Elements -->
+ <xs:group
+ name="xhtml.InlStruct.class">
+ <xs:choice>
+ <xs:element
+ name="br"
+ type="xhtml.br.type"/>
+ <xs:element
+ name="span"
+ type="xhtml.span.type"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group
+ name="xhtml.InlPhras.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: elements "dfn", "samp", "kbd", "var", "q" , "abbr" and
+ "acronym" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element
+ name="em"
+ type="xhtml.em.type"/>
+ <xs:element
+ name="strong"
+ type="xhtml.strong.type"/>
+ <xs:element
+ name="code"
+ type="xhtml.code.type"/>
+ <xs:element
+ name="cite"
+ type="xhtml.cite.type"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group
+ name="xhtml.InlPres.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: elements "tt", "i", "b", "big", "small", "sub", "sup" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence/>
+ </xs:group>
+ <xs:group name="xhtml.I18n.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: element "bdo" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence/>
+ </xs:group>
+ <xs:group name="xhtml.Anchor.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: element "a" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence/>
+ </xs:group>
+ <xs:group
+ name="xhtml.InlSpecial.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: elements "map", "object" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element
+ name="img"
+ type="xhtml.img.type"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="xhtml.InlForm.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: elements "input", "select", "textara", "lable", "button" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence/>
+ </xs:group>
+ <xs:group
+ name="xhtml.Inline.extra">
+ <xs:sequence/>
+ </xs:group>
+ <xs:group name="xhtml.Ruby.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: element "ruby" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence/>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.Inline.class">
+ <xs:choice>
+ <xs:group
+ ref="xhtml.InlStruct.class"/>
+ <xs:group
+ ref="xhtml.InlPhras.class"/>
+ <xs:group
+ ref="xhtml.InlPres.class"/>
+ <xs:group
+ ref="xhtml.I18n.class"/>
+ <xs:group
+ ref="xhtml.Anchor.class"/>
+ <xs:group
+ ref="xhtml.InlSpecial.class"/>
+ <xs:group
+ ref="xhtml.InlForm.class"/>
+ <xs:group
+ ref="xhtml.Ruby.class"/>
+ <xs:group
+ ref="xhtml.Inline.extra"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group
+ name="xhtml.InlinePre.mix">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: elements "tt", "i", "b", "script", "map" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:group
+ ref="xhtml.InlStruct.class"/>
+ <xs:group
+ ref="xhtml.InlPhras.class"/>
+ <xs:group
+ ref="xhtml.I18n.class"/>
+ <xs:group
+ ref="xhtml.Anchor.class"/>
+ <xs:group
+ ref="xhtml.Inline.extra"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.Inline.mix">
+ <xs:choice>
+ <xs:group
+ ref="xhtml.Inline.class"/>
+ <xs:group
+ ref="xhtml.Misc.class"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.Heading.class">
+ <xs:choice>
+ <xs:element
+ name="h1"
+ type="xhtml.h1.type"/>
+ <xs:element
+ name="h2"
+ type="xhtml.h2.type"/>
+ <xs:element
+ name="h3"
+ type="xhtml.h3.type"/>
+ <xs:element
+ name="h4"
+ type="xhtml.h4.type"/>
+ <xs:element
+ name="h5"
+ type="xhtml.h5.type"/>
+ <xs:element
+ name="h6"
+ type="xhtml.h6.type"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.List.class">
+ <xs:choice>
+ <xs:element
+ name="ul"
+ type="xhtml.ul.type"/>
+ <xs:element
+ name="ol"
+ type="xhtml.ol.type"/>
+ <xs:element
+ name="dl"
+ type="xhtml.dl.type"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.Table.class">
+ <xs:choice>
+ <xs:element
+ name="table"
+ type="xhtml.table.type"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="xhtml.Form.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: element "form" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice/>
+ </xs:group>
+
+ <xs:group name="xhtml.Fieldset.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: element "fieldset" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice/>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.BlkStruct.class">
+ <xs:choice>
+ <xs:element
+ name="p"
+ type="xhtml.p.type"/>
+ <xs:element
+ name="div"
+ type="xhtml.div.type"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.BlkPhras.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: element "address" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element
+ name="pre"
+ type="xhtml.pre.type"/>
+ <xs:element
+ name="blockquote"
+ type="xhtml.blockquote.type"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group
+ name="xhtml.BlkPres.class">
+ <xs:sequence>
+ <xs:element
+ name="hr"
+ type="xhtml.hr.type"/>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.BlkSpecial.class">
+ <xs:choice>
+ <xs:group
+ ref="xhtml.Table.class"/>
+ <xs:group
+ ref="xhtml.Form.class"/>
+ <xs:group
+ ref="xhtml.Fieldset.class"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.Block.extra">
+ <xs:sequence/>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.Block.class">
+ <xs:choice>
+ <xs:group
+ ref="xhtml.BlkStruct.class"/>
+ <xs:group
+ ref="xhtml.BlkPhras.class"/>
+ <xs:group
+ ref="xhtml.BlkPres.class"/>
+ <xs:group
+ ref="xhtml.BlkSpecial.class"/>
+ <xs:group
+ ref="xhtml.Block.extra"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.Block.mix">
+ <xs:choice>
+ <xs:group
+ ref="xhtml.Heading.class"/>
+ <xs:group
+ ref="xhtml.List.class"/>
+ <xs:group
+ ref="xhtml.Block.class"/>
+ <xs:group
+ ref="xhtml.Misc.class"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.Flow.mix">
+ <xs:choice>
+ <xs:group
+ ref="xhtml.Heading.class"/>
+ <xs:group
+ ref="xhtml.List.class"/>
+ <xs:group
+ ref="xhtml.Block.class"/>
+ <xs:group
+ ref="xhtml.Inline.class"/>
+ <xs:group
+ ref="xhtml.Misc.class"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:element
+ name="html"
+ type="xhtml.html.type"/>
+</xs:schema> \ No newline at end of file
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml-modules-1.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml-modules-1.xsd
new file mode 100644
index 00000000..016833be
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml-modules-1.xsd
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/">
+
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+ <xs:annotation>
+ <xs:documentation>
+ This XML Schema declares changes to the content models
+ of modules included in SLXHTML 1.2
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>
+ Module Content Model Redefinitions
+
+ This schema describes the changes (Redefinitions) to the
+ content model of individual modules as they are instantiated as part of
+ SLXHTML 1.2 Document
+ </xs:documentation>
+ </xs:annotation>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- Changes to common attributes module -->
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <xs:redefine schemaLocation="xhtml-attribs-1.xsd">
+
+ <xs:attributeGroup name="xhtml.I18n.attrib">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2: Removed xml:lang attrib.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.I18n.extra.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.title">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2: Removed title attrib.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+
+ </xs:redefine>
+
+ <xs:include schemaLocation="xhtml-framework-1.xsd"/>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- Changes to block phrasal elements module -->
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <xs:redefine schemaLocation="xhtml-blkphras-1.xsd">
+
+ <xs:attributeGroup name="xhtml.blockquote.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2: Removed cite attrib.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+
+ </xs:redefine>
+
+ <xs:include schemaLocation="xhtml-text-1.xsd"/>
+
+ <xs:include schemaLocation="xhtml-list-1.xsd"/>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- Changes to Structural Module -->
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <xs:redefine schemaLocation="xhtml-struct-1.xsd">
+
+ <xs:attributeGroup name="xhtml.version.attrib">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2: Change value of the version attrib.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="version" type="xh11d:FPI" fixed="-//www.buergerkarte.at//DOCUMENT SLXHTML 1.2//DE"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.profile.attrib">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2: Removed profile attrib.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+ </xs:redefine>
+
+ <xs:include schemaLocation="xhtml-pres-1.xsd"/>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- Changes to images module -->
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <xs:redefine schemaLocation="xhtml-image-1.xsd">
+
+ <xs:attributeGroup name="xhtml.img.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2: Removed attributes "longdesc", "height", "width".
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="src" type="xh11d:URI" use="required"/>
+ <xs:attribute name="alt" type="xh11d:Text" use="required"/>
+ </xs:attributeGroup>
+
+ </xs:redefine>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- Changes to style module -->
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <xs:redefine schemaLocation="xhtml-style-1.xsd">
+
+ <xs:attributeGroup name="xhtml.style.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute group "title"
+ Removed attribute "xml:space"
+ Fixed value of attribute "type"
+ Fixed value of attribute "media"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.I18n.attrib"/>
+ <xs:attribute name="type" type="xh11d:ContentType" use="required" fixed="text/css"/>
+ <xs:attribute name="media" type="xh11d:MediaDesc" fixed="screen"/>
+ </xs:attributeGroup>
+
+ </xs:redefine>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- Changes to table module -->
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <xs:redefine schemaLocation="xhtml-table-1.xsd">
+
+ <xs:attributeGroup name="xhtml.td.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute groups "scope.attrib", "CellHAlign.attrib", "CellVAlign.attrib"
+ Removed attributes "abbr", "axis", "headers"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="rowspan" type="xh11d:Number" default="1"/>
+ <xs:attribute name="colspan" type="xh11d:Number" default="1"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.th.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute groups "scope.attrib", "CellHAlign.attrib", "CellVAlign.attrib"
+ Removed attributes "abbr", "axis", "headers"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="rowspan" type="xh11d:Number" default="1"/>
+ <xs:attribute name="colspan" type="xh11d:Number" default="1"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.tr.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute groups "CellHAlign.attrib", "CellVAlign.attrib"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.col.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute groups "CellHAlign.attrib", "CellVAlign.attrib"
+ Removed attributes "span", "width"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.colgroup.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute groups "CellHAlign.attrib", "CellVAlign.attrib"
+ Removed attributes "span", "width"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.tbody.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute groups "CellHAlign.attrib", "CellVAlign.attrib"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.tfoot.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute groups "CellHAlign.attrib", "CellVAlign.attrib"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.thead.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute groups "CellHAlign.attrib", "CellVAlign.attrib"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.table.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute groups "frame.attrib", "rules.attrib"
+ Removed attributes "summary", "width", "border", "cellspacing", "cellpadding"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ </xs:redefine>
+
+</xs:schema>
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml.xsd
new file mode 100644
index 00000000..555edb52
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml.xsd
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml" xmlns:xs="http://www.w3.org/2001/XMLSchema" blockDefault="#all">
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema driver for SLXHTML 1.2.
+ SLXHTML is a profile of XHTML (see W3C copyright notice below).
+
+ @author: Gregor Karlinger gregor.karlinger@cio.gv.at
+ $Id: slxhtml.xsd,v 1.3 2004/05/12 11:35:31 karlinger Exp $
+ </xs:documentation>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ This is the Schema Driver file for SLXHTML 1.2
+ Document Type
+
+ This schema includes
+ + modules for SLXHTML 1.2 Document Type.
+
+ + schema that defines all the named model for
+ the SLXHTML 1.2 Document Type
+
+ + schema that redefines the content model of
+ individual elements defined in the Module
+ implementations.
+
+ SLXHTML 1.2 Document Type includes the following Modules
+
+ XHTML Core modules
+ + text
+ + lists
+ + structure
+
+ Other XHTML modules
+ + Style
+ + Image
+ + Tables
+
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="xml.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ This import brings in the XML namespace attributes
+ The XML attributes are used by various modules
+ </xs:documentation>
+ </xs:annotation>
+ </xs:import>
+
+ <xs:include schemaLocation="slxhtml-model-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ This schema redefines the content model defined by
+ the individual modules for SLXHTML 1.2 Document Type
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include>
+
+ <xs:include schemaLocation="slxhtml-modules-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Document Model module for the SLXHTML 1.2 Document Type.
+ This schema file defines all named models used by XHTML
+ Modularization Framework for SLXHTML 1.2 Document Type
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include>
+</xs:schema>
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-attribs-1.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-attribs-1.xsd
new file mode 100644
index 00000000..df5ce483
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-attribs-1.xsd
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema common attributes module for XHTML
+ $Id: xhtml-attribs-1.xsd,v 1.6 2005/09/26 23:37:47 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_commonatts"/>
+ </xs:annotation>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="xml.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ This import brings in the XML namespace attributes
+ The module itself does not provide the schemaLocation
+ and expects the driver schema to provide the
+ actual SchemaLocation.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:import>
+ <xs:attributeGroup name="xhtml.id">
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.class">
+ <xs:attribute name="class" type="xs:NMTOKENS"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.title">
+ <xs:attribute name="title" type="xs:string"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.Core.attrib">
+ <xs:attributeGroup ref="xhtml.id"/>
+ <xs:attributeGroup ref="xhtml.class"/>
+ <xs:attributeGroup ref="xhtml.title"/>
+ <xs:attributeGroup ref="xhtml.Core.extra.attrib"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.I18n.attrib">
+ <xs:attribute ref="xml:lang" />
+ <xs:attributeGroup ref="xhtml.I18n.extra.attrib"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.Common.attrib">
+ <xs:attributeGroup ref="xhtml.Core.attrib"/>
+ <xs:attributeGroup ref="xhtml.I18n.attrib"/>
+ <xs:attributeGroup ref="xhtml.Common.extra"/>
+ </xs:attributeGroup>
+ <!-- Global attributes -->
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute name="class" type="xs:NMTOKENS"/>
+ <xs:attribute name="title" type="xs:string"/>
+ <xs:attributeGroup name="xhtml.Global.core.attrib">
+ <xs:attribute ref="id"/>
+ <xs:attribute ref="class"/>
+ <xs:attribute ref="title"/>
+ <xs:attributeGroup ref="xhtml.Global.core.extra.attrib" />
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.Global.i18n.attrib">
+ <xs:attribute ref="xml:lang" />
+ <xs:attributeGroup ref="xhtml.Global.I18n.extra.attrib"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.Global.common.attrib">
+ <xs:attributeGroup ref="xhtml.Global.core.attrib"/>
+ <xs:attributeGroup ref="xhtml.Global.i18n.attrib"/>
+ <xs:attributeGroup ref="xhtml.Global.Common.extra"/>
+ </xs:attributeGroup>
+</xs:schema>
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkphras-1.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkphras-1.xsd
new file mode 100644
index 00000000..da15e4c1
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkphras-1.xsd
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" schemaLocation="xhtml-datatypes-1.xsd" />
+
+ <xs:include schemaLocation="xhtml-attribs-1.xsd" />
+
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema Block Phrasal support module for XHTML
+ $Id: xhtml-blkphras-1.xsd,v 1.6 2006/09/11 10:27:50 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Block Phrasal
+ This module declares the elements and their attributes used to
+ support block-level phrasal markup.
+ This is the XML Schema block phrasal elements module for XHTML
+
+ * address, blockquote, pre, h1, h2, h3, h4, h5, h6
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_textmodule"/>
+ </xs:annotation>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="xml.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ This import brings in the XML namespace attributes
+ The module itself does not provide the schemaLocation
+ and expects the driver schema to provide the
+ actual SchemaLocation.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:import>
+ <!-- address -->
+ <xs:attributeGroup name="xhtml.address.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.address.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.address.type" mixed="true">
+ <xs:group ref="xhtml.address.content"/>
+ <xs:attributeGroup ref="xhtml.address.attlist"/>
+ </xs:complexType>
+ <!-- blockquote -->
+ <xs:attributeGroup name="xhtml.blockquote.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="cite" type="xh11d:URI"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.blockquote.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Block.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.blockquote.type">
+ <xs:group ref="xhtml.blockquote.content"/>
+ <xs:attributeGroup ref="xhtml.blockquote.attlist"/>
+ </xs:complexType>
+ <!-- pre -->
+ <xs:attributeGroup name="xhtml.pre.attlist">
+ <xs:attribute ref="xml:space"/>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.pre.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.InlinePre.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.pre.type" mixed="true">
+ <xs:group ref="xhtml.pre.content"/>
+ <xs:attributeGroup ref="xhtml.pre.attlist"/>
+ </xs:complexType>
+ <!-- Heading Elements -->
+ <xs:attributeGroup name="xhtml.heading.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:complexType name="xhtml.heading.type" mixed="true">
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:attributeGroup ref="xhtml.heading.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.h1.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.h1.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.h1.type" mixed="true">
+ <xs:group ref="xhtml.h1.content"/>
+ <xs:attributeGroup ref="xhtml.h1.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.h2.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.h2.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.h2.type" mixed="true">
+ <xs:group ref="xhtml.h2.content"/>
+ <xs:attributeGroup ref="xhtml.h2.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.h3.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.h3.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.h3.type" mixed="true">
+ <xs:group ref="xhtml.h3.content"/>
+ <xs:attributeGroup ref="xhtml.h3.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.h4.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.h4.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.h4.type" mixed="true">
+ <xs:group ref="xhtml.h4.content"/>
+ <xs:attributeGroup ref="xhtml.h4.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.h5.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.h5.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.h5.type" mixed="true">
+ <xs:group ref="xhtml.h5.content"/>
+ <xs:attributeGroup ref="xhtml.h5.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.h6.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.h6.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.h6.type" mixed="true">
+ <xs:group ref="xhtml.h6.content"/>
+ <xs:attributeGroup ref="xhtml.h6.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkpres-1.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkpres-1.xsd
new file mode 100644
index 00000000..cf42303a
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkpres-1.xsd
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML SchemaBlock presentation element module for XHTML
+ $Id: xhtml-blkpres-1.xsd,v 1.2 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Block Presentational Elements
+
+ * hr
+
+ This module declares the elements and their attributes used to
+ support block-level presentational markup.
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_presentationmodule"/>
+ </xs:annotation>
+ <xs:attributeGroup name="xhtml.hr.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.hr.content">
+ <xs:sequence/>
+ </xs:group>
+ <xs:complexType name="xhtml.hr.type">
+ <xs:group ref="xhtml.hr.content"/>
+ <xs:attributeGroup ref="xhtml.hr.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkstruct-1.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkstruct-1.xsd
new file mode 100644
index 00000000..1e658580
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkstruct-1.xsd
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+ <xs:annotation>
+ <xs:documentation>
+ Block Structural
+
+ * div, p
+
+ This module declares the elements and their attributes used to
+ support block-level structural markup.
+
+ This is the XML Schema Block Structural module for XHTML
+ $Id: xhtml-blkstruct-1.xsd,v 1.3 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <!-- div -->
+ <xs:attributeGroup name="xhtml.div.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.div.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.div.type" mixed="true">
+ <xs:group ref="xhtml.div.content"/>
+ <xs:attributeGroup ref="xhtml.div.attlist"/>
+ </xs:complexType>
+ <!-- p -->
+ <xs:attributeGroup name="xhtml.p.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.p.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.p.type" mixed="true">
+ <xs:group ref="xhtml.p.content"/>
+ <xs:attributeGroup ref="xhtml.p.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-datatypes-1.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-datatypes-1.xsd
new file mode 100644
index 00000000..5943cf35
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-datatypes-1.xsd
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://www.w3.org/1999/xhtml/datatypes/"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+ targetNamespace="http://www.w3.org/1999/xhtml/datatypes/"
+ elementFormDefault="qualified"
+>
+ <xs:annotation>
+ <xs:documentation>
+ XHTML Datatypes
+ This is the XML Schema datatypes module for XHTML
+
+ Defines containers for the XHTML datatypes, many of
+ these imported from other specifications and standards.
+
+ $Id: xhtml-datatypes-1.xsd,v 1.9 2008/06/04 20:58:09 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstraction.html#s_common_attrtypes"/>
+ </xs:annotation>
+
+ <!-- nn for pixels or nn% for percentage length -->
+ <xs:simpleType name="Length">
+ <xs:union memberTypes="xs:nonNegativeInteger">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="\d+[%]|\d*\.\d+[%]"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ <!-- space-separated list of link types -->
+ <xs:simpleType name="LinkTypes">
+ <xs:list itemType="xs:NMTOKEN"/>
+ </xs:simpleType>
+ <!-- single or comma-separated list of media descriptors -->
+ <xs:simpleType name="MediaDesc">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- pixel, percentage, or relative -->
+ <xs:simpleType name="MultiLength">
+ <xs:union memberTypes="xh11d:Length">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="\d*\*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ <!-- one or more digits (NUMBER) -->
+ <xs:simpleType name="Number">
+ <xs:restriction base="xs:nonNegativeInteger"/>
+ </xs:simpleType>
+ <!-- integer representing length in pixels -->
+ <xs:simpleType name="Pixels">
+ <xs:restriction base="xs:nonNegativeInteger"/>
+ </xs:simpleType>
+ <!-- script expression -->
+ <xs:simpleType name="Script">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- sixteen color names or RGB color expression-->
+ <xs:simpleType name="Color">
+ <xs:union memberTypes="xs:NMTOKEN">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ <!-- textual content -->
+ <xs:simpleType name="Text">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- Imported Datatypes -->
+ <!-- a single character, as per section 2.2 of [XML] -->
+ <xs:simpleType name="Character">
+ <xs:restriction base="xs:string">
+ <xs:length value="1" fixed="true"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <!-- a character encoding, as per [RFC2045] -->
+ <xs:simpleType name="Charset">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- a space separated list of character encodings, as per [RFC2045] -->
+ <xs:simpleType name="Charsets">
+ <xs:list itemType="Charset"/>
+ </xs:simpleType>
+ <!-- media type, as per [RFC2045] -->
+ <xs:simpleType name="ContentType">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- comma-separated list of media types, as per [RFC2045] -->
+ <xs:simpleType name="ContentTypes">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- date and time information. ISO date format -->
+ <xs:simpleType name="Datetime">
+ <xs:restriction base="xs:dateTime"/>
+ </xs:simpleType>
+ <!-- formal public identifier, as per [ISO8879] -->
+ <xs:simpleType name="FPI">
+ <xs:restriction base="xs:normalizedString"/>
+ </xs:simpleType>
+
+ <!-- a window name as used in the target attribute -->
+ <xs:simpleType name="FrameTarget">
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="_blank"/>
+ <xs:enumeration value="_self"/>
+ <xs:enumeration value="_parent"/>
+ <xs:enumeration value="_top"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[a-zA-Z].*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <!-- a language code, as per [RFC3066] -->
+ <xs:simpleType name="LanguageCode">
+ <xs:restriction base="xs:language"/>
+ </xs:simpleType>
+ <!-- a comma separated list of language ranges -->
+ <xs:simpleType name="LanguageCodes">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- a Uniform Resource Identifier, see [URI] -->
+ <xs:simpleType name="URI">
+ <xs:restriction base="xs:anyURI"/>
+ </xs:simpleType>
+ <!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
+ <xs:simpleType name="URIs">
+ <xs:list itemType="xs:anyURI"/>
+ </xs:simpleType>
+ <!-- comma-separated list of MultiLength -->
+ <xs:simpleType name="MultiLengths">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- character Data -->
+ <xs:simpleType name="CDATA">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- CURIE placeholder datatypes -->
+ <xs:simpleType name="CURIE">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[\i-[:]][\c-[:]]*:.+" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="CURIEs">
+ <xs:list itemType="xh11d:CURIE"/>
+ </xs:simpleType>
+ <xs:simpleType name="SafeCURIE">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\[[\i-[:]][\c-[:]]*:.+\]" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="SafeCURIEs">
+ <xs:list itemType="xh11d:SafeCURIE"/>
+ </xs:simpleType>
+ <xs:simpleType name="URIorSafeCURIE">
+ <xs:union memberTypes="xs:anyURI xh11d:SafeCURIE" />
+ </xs:simpleType>
+ <xs:simpleType name="URIorSafeCURIEs">
+ <xs:list itemType="xh11d:URIorSafeCURIE"/>
+ </xs:simpleType>
+</xs:schema>
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-framework-1.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-framework-1.xsd
new file mode 100644
index 00000000..05b906d4
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-framework-1.xsd
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+ elementFormDefault="qualified"
+>
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema Modular Framework support module for XHTML
+ $Id: xhtml-framework-1.xsd,v 1.5 2005/09/26 23:37:47 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ XHTML Modular Framework
+ This required module instantiates the necessary modules
+ needed to support the XHTML modularization framework.
+
+ The Schema modules instantiated are:
+ + notations
+ + datatypes
+ + common attributes
+ + character entities
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_commonatts"/>
+ </xs:annotation>
+ <!-- xs:include schemaLocation="xhtml-notations-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Notations module
+ Declares XHTML notations for Attribute data types
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include -->
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" schemaLocation="xhtml-datatypes-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ This module defines XHTML Attribute DataTypes
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstraction.html#s_common_attrtypes"/>
+ </xs:annotation>
+ </xs:import>
+ <xs:include schemaLocation="xhtml-attribs-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ This module defines Common attributes for XHTML
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_commonatts"/>
+ </xs:annotation>
+ </xs:include>
+ <!-- xs:include schemaLocation="xhtml-charent-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Character entities module
+ Note: Entities are not supported in XML Schema
+ The Schema Module uses DTDs to define Entities
+
+ This module defines
+ + XHTML Latin 1 Character Entities
+ + XHTML Special Characters
+ + XHTML Mathematical, Greek, and Symbolic Characters
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include -->
+</xs:schema>
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-image-1.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-image-1.xsd
new file mode 100644
index 00000000..cd16bc9b
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-image-1.xsd
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+
+ <xs:annotation>
+ <xs:documentation>
+ Images
+ This is the XML Schema Images module for XHTML
+
+ * img
+
+ This module provides markup to support basic image embedding.
+
+ To avoid problems with text-only UAs as well as to make
+ image content understandable and navigable to users of
+ non-visual UAs, you need to provide a description with
+ the 'alt' attribute, and avoid server-side image maps.
+
+
+ $Id: xhtml-image-1.xsd,v 1.2 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_imagemodule"/>
+ </xs:annotation>
+ <xs:attributeGroup name="xhtml.img.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="src" type="xh11d:URI" use="required"/>
+ <xs:attribute name="alt" type="xh11d:Text" use="required"/>
+ <xs:attribute name="longdesc" type="xh11d:URI"/>
+ <xs:attribute name="height" type="xh11d:Length"/>
+ <xs:attribute name="width" type="xh11d:Length"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.img.content">
+ <xs:sequence/>
+ </xs:group>
+ <xs:complexType name="xhtml.img.type">
+ <xs:group ref="xhtml.img.content"/>
+ <xs:attributeGroup ref="xhtml.img.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlphras-1.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlphras-1.xsd
new file mode 100644
index 00000000..919c59de
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlphras-1.xsd
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema Inline Phrasal support module for XHTML
+ $Id: xhtml-inlphras-1.xsd,v 1.4 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Inline Phrasal.
+ This module declares the elements and their attributes used to
+ support inline-level phrasal markup.
+ This is the XML Schema Inline Phrasal module for XHTML
+
+ * abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
+
+ $Id: xhtml-inlphras-1.xsd,v 1.4 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_textmodule"/>
+ </xs:annotation>
+ <xs:attributeGroup name="xhtml.abbr.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.abbr.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.abbr.type" mixed="true">
+ <xs:group ref="xhtml.abbr.content"/>
+ <xs:attributeGroup ref="xhtml.abbr.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.acronym.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.acronym.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.acronym.type" mixed="true">
+ <xs:group ref="xhtml.acronym.content"/>
+ <xs:attributeGroup ref="xhtml.acronym.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.cite.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.cite.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.cite.type" mixed="true">
+ <xs:group ref="xhtml.cite.content"/>
+ <xs:attributeGroup ref="xhtml.cite.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.code.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.code.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.code.type" mixed="true">
+ <xs:group ref="xhtml.code.content"/>
+ <xs:attributeGroup ref="xhtml.code.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.dfn.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.dfn.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.dfn.type" mixed="true">
+ <xs:group ref="xhtml.dfn.content"/>
+ <xs:attributeGroup ref="xhtml.dfn.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.em.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.em.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.em.type" mixed="true">
+ <xs:group ref="xhtml.em.content"/>
+ <xs:attributeGroup ref="xhtml.em.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.kbd.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.kbd.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.kbd.type" mixed="true">
+ <xs:group ref="xhtml.kbd.content"/>
+ <xs:attributeGroup ref="xhtml.kbd.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.samp.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.samp.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.samp.type" mixed="true">
+ <xs:group ref="xhtml.samp.content"/>
+ <xs:attributeGroup ref="xhtml.samp.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.strong.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.strong.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.strong.type" mixed="true">
+ <xs:group ref="xhtml.strong.content"/>
+ <xs:attributeGroup ref="xhtml.strong.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.var.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.var.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.var.type" mixed="true">
+ <xs:group ref="xhtml.var.content"/>
+ <xs:attributeGroup ref="xhtml.var.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.q.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="cite" type="xh11d:URI"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.q.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.q.type" mixed="true">
+ <xs:group ref="xhtml.q.content"/>
+ <xs:attributeGroup ref="xhtml.q.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlpres-1.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlpres-1.xsd
new file mode 100644
index 00000000..a053447c
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlpres-1.xsd
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema Inline Presentation element module for XHTML
+ $Id: xhtml-inlpres-1.xsd,v 1.2 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Inline Presentational Elements
+
+ * b, big, i, small, sub, sup, tt
+
+ This module declares the elements and their attributes used to
+ support inline-level presentational markup.
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_presentationmodule"/>
+ </xs:annotation>
+ <xs:attributeGroup name="xhtml.InlPres.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.InlPres.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.InlPres.type" mixed="true">
+ <xs:group ref="xhtml.InlPres.content"/>
+ <xs:attributeGroup ref="xhtml.InlPres.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlstruct-1.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlstruct-1.xsd
new file mode 100644
index 00000000..635eb5f1
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlstruct-1.xsd
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema Inline Structural support module for XHTML
+ $Id: xhtml-inlstruct-1.xsd,v 1.4 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Inline Structural.
+ This module declares the elements and their attributes
+ used to support inline-level structural markup.
+ This is the XML Schema Inline Structural element module for XHTML
+
+ * br, span
+
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_textmodule"/>
+ </xs:annotation>
+ <xs:attributeGroup name="xhtml.br.attlist">
+ <xs:attributeGroup ref="xhtml.Core.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.br.content">
+ <xs:sequence/>
+ </xs:group>
+ <xs:complexType name="xhtml.br.type">
+ <xs:group ref="xhtml.br.content"/>
+ <xs:attributeGroup ref="xhtml.br.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.span.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.span.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.span.type" mixed="true">
+ <xs:group ref="xhtml.span.content"/>
+ <xs:attributeGroup ref="xhtml.span.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-list-1.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-list-1.xsd
new file mode 100644
index 00000000..cc22ba88
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-list-1.xsd
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+ <xs:annotation>
+ <xs:documentation>
+ List Module
+ This is the XML Schema Lists module for XHTML
+ List Module Elements
+
+ * dl, dt, dd, ol, ul, li
+
+ This module declares the list-oriented element types
+ and their attributes.
+ $Id: xhtml-list-1.xsd,v 1.2 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_listmodule"/>
+ </xs:annotation>
+ <xs:attributeGroup name="xhtml.dt.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.dt.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.dt.type" mixed="true">
+ <xs:group ref="xhtml.dt.content"/>
+ <xs:attributeGroup ref="xhtml.dt.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.dd.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.dd.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.dd.type" mixed="true">
+ <xs:group ref="xhtml.dd.content"/>
+ <xs:attributeGroup ref="xhtml.dd.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.dl.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.dl.content">
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element name="dt" type="xhtml.dt.type"/>
+ <xs:element name="dd" type="xhtml.dd.type"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.dl.type">
+ <xs:group ref="xhtml.dl.content"/>
+ <xs:attributeGroup ref="xhtml.dl.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.li.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.li.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.li.type" mixed="true">
+ <xs:group ref="xhtml.li.content"/>
+ <xs:attributeGroup ref="xhtml.li.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.ol.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.ol.content">
+ <xs:sequence>
+ <xs:element name="li" type="xhtml.li.type" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.ol.type">
+ <xs:group ref="xhtml.ol.content"/>
+ <xs:attributeGroup ref="xhtml.ol.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.ul.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.ul.content">
+ <xs:sequence>
+ <xs:element name="li" type="xhtml.li.type" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.ul.type">
+ <xs:group ref="xhtml.ul.content"/>
+ <xs:attributeGroup ref="xhtml.ul.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-pres-1.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-pres-1.xsd
new file mode 100644
index 00000000..bc36fc48
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-pres-1.xsd
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema Presentation module for XHTML
+ This is a REQUIRED module.
+ $Id: xhtml-pres-1.xsd,v 1.2 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Presentational Elements
+
+ This module defines elements and their attributes for
+ simple presentation-related markup.
+
+ Elements defined here:
+
+ * hr
+ * b, big, i, small, sub, sup, tt
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_presentationmodule"/>
+ </xs:annotation>
+ <xs:include schemaLocation="xhtml-blkpres-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Block Presentational module
+ Elements defined here:
+
+ * hr
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include>
+ <xs:include schemaLocation="xhtml-inlpres-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Inline Presentational module
+ Elements defined here:
+
+ * b, big, i, small, sub, sup, tt
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include>
+</xs:schema>
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-struct-1.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-struct-1.xsd
new file mode 100644
index 00000000..60cbcbf5
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-struct-1.xsd
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/">
+ <xs:import
+ namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd"/>
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema Document Structure module for XHTML
+ Document Structure
+
+ * title, head, body, html
+
+ The Structure Module defines the major structural elements and
+ their attributes.
+
+ $Id: xhtml-struct-1.xsd,v 1.8 2006/09/11 10:27:50 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_structuremodule"/>
+ </xs:annotation>
+ <xs:attributeGroup
+ name="xhtml.title.attlist">
+ <xs:attributeGroup
+ ref="xhtml.I18n.attrib"/>
+ <xs:attributeGroup ref="xhtml.id"/>
+ </xs:attributeGroup>
+ <xs:group
+ name="xhtml.title.content">
+ <xs:sequence/>
+ </xs:group>
+ <xs:complexType
+ name="xhtml.title.type"
+ mixed="true">
+ <xs:group
+ ref="xhtml.title.content"/>
+ <xs:attributeGroup
+ ref="xhtml.title.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup
+ name="xhtml.profile.attrib">
+ <xs:attribute
+ name="profile"
+ type="xh11d:URI"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup
+ name="xhtml.head.attlist">
+ <xs:attributeGroup
+ ref="xhtml.profile.attrib"/>
+ <xs:attributeGroup
+ ref="xhtml.I18n.attrib"/>
+ <xs:attributeGroup ref="xhtml.id"/>
+ </xs:attributeGroup>
+ <xs:complexType
+ name="xhtml.head.type">
+ <xs:group
+ ref="xhtml.head.content"/>
+ <xs:attributeGroup
+ ref="xhtml.head.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup
+ name="xhtml.body.attlist">
+ <xs:attributeGroup
+ ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group
+ name="xhtml.body.content">
+ <xs:sequence>
+ <xs:group
+ ref="xhtml.Block.mix"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType
+ name="xhtml.body.type">
+ <xs:group
+ ref="xhtml.body.content"/>
+ <xs:attributeGroup
+ ref="xhtml.body.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup
+ name="xhtml.version.attrib">
+ <xs:attribute
+ name="version"
+ type="xh11d:FPI"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup
+ name="xhtml.html.attlist">
+ <xs:attributeGroup
+ ref="xhtml.version.attrib"/>
+ <xs:attributeGroup
+ ref="xhtml.I18n.attrib"/>
+ <xs:attributeGroup ref="xhtml.id"/>
+ </xs:attributeGroup>
+ <xs:group
+ name="xhtml.html.content">
+ <xs:sequence>
+ <xs:element
+ name="head"
+ type="xhtml.head.type"/>
+ <xs:element
+ name="body"
+ type="xhtml.body.type"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType
+ name="xhtml.html.type">
+ <xs:group
+ ref="xhtml.html.content"/>
+ <xs:attributeGroup
+ ref="xhtml.html.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-style-1.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-style-1.xsd
new file mode 100644
index 00000000..1b3e7d3b
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-style-1.xsd
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema Stylesheets module for XHTML
+ $Id: xhtml-style-1.xsd,v 1.5 2006/09/11 10:14:57 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Stylesheets
+
+ * style
+
+ This module declares the style element type and its attributes,
+ used to embed stylesheet information in the document head element.
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_stylemodule"/>
+ </xs:annotation>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="xml.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ This import brings in the XML namespace attributes
+ The module itself does not provide the schemaLocation
+ and expects the driver schema to provide the
+ actual SchemaLocation.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:import>
+ <xs:attributeGroup name="xhtml.style.attlist">
+ <xs:attributeGroup ref="xhtml.id"/>
+ <xs:attributeGroup ref="xhtml.title"/>
+ <xs:attributeGroup ref="xhtml.I18n.attrib"/>
+ <xs:attribute name="type" type="xh11d:ContentType" use="required"/>
+ <xs:attribute name="media" type="xh11d:MediaDesc"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.style.content">
+ <xs:sequence/>
+ </xs:group>
+ <xs:complexType name="xhtml.style.type" mixed="true">
+ <xs:group ref="xhtml.style.content"/>
+ <xs:attributeGroup ref="xhtml.style.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-table-1.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-table-1.xsd
new file mode 100644
index 00000000..ec76db3c
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-table-1.xsd
@@ -0,0 +1,272 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema Tables module for XHTML
+ $Id: xhtml-table-1.xsd,v 1.3 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Tables
+
+ * table, caption, thead, tfoot, tbody, colgroup, col, tr, th, td
+
+ This module declares element types and attributes used to provide
+ table markup similar to HTML 4.0, including features that enable
+ better accessibility for non-visual user agents.
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_tablemodule"/>
+ </xs:annotation>
+ <xs:attributeGroup name="xhtml.frame.attrib">
+ <xs:attribute name="frame">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="void"/>
+ <xs:enumeration value="above"/>
+ <xs:enumeration value="below"/>
+ <xs:enumeration value="hsides"/>
+ <xs:enumeration value="lhs"/>
+ <xs:enumeration value="rhs"/>
+ <xs:enumeration value="vsides"/>
+ <xs:enumeration value="box"/>
+ <xs:enumeration value="border"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.rules.attrib">
+ <xs:attribute name="rules">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="none"/>
+ <xs:enumeration value="groups"/>
+ <xs:enumeration value="rows"/>
+ <xs:enumeration value="cols"/>
+ <xs:enumeration value="all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.CellVAlign.attrib">
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ <xs:enumeration value="baseline"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.CellHAlign.attrib">
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char" type="xh11d:Character"/>
+ <xs:attribute name="charoff" type="xh11d:Length"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.scope.attrib">
+ <xs:attribute name="scope">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="row"/>
+ <xs:enumeration value="col"/>
+ <xs:enumeration value="rowgroup"/>
+ <xs:enumeration value="colgroup"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.td.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="abbr" type="xh11d:Text"/>
+ <xs:attribute name="axis" type="xh11d:CDATA"/>
+ <xs:attribute name="headers" type="xs:IDREFS"/>
+ <xs:attributeGroup ref="xhtml.scope.attrib"/>
+ <xs:attribute name="rowspan" type="xh11d:Number" default="1"/>
+ <xs:attribute name="colspan" type="xh11d:Number" default="1"/>
+ <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.td.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.td.type" mixed="true">
+ <xs:group ref="xhtml.td.content"/>
+ <xs:attributeGroup ref="xhtml.td.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.th.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="abbr" type="xh11d:Text"/>
+ <xs:attribute name="axis" type="xh11d:CDATA"/>
+ <xs:attribute name="headers" type="xs:IDREFS"/>
+ <xs:attributeGroup ref="xhtml.scope.attrib"/>
+ <xs:attribute name="rowspan" type="xh11d:Number" default="1"/>
+ <xs:attribute name="colspan" type="xh11d:Number" default="1"/>
+ <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.th.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.th.type" mixed="true">
+ <xs:group ref="xhtml.th.content"/>
+ <xs:attributeGroup ref="xhtml.th.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.tr.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.tr.content">
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element name="th" type="xhtml.th.type"/>
+ <xs:element name="td" type="xhtml.td.type"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.tr.type">
+ <xs:group ref="xhtml.tr.content"/>
+ <xs:attributeGroup ref="xhtml.tr.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.col.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="span" type="xh11d:Number" default="1"/>
+ <xs:attribute name="width" type="xh11d:MultiLength"/>
+ <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.col.content">
+ <xs:sequence/>
+ </xs:group>
+ <xs:complexType name="xhtml.col.type">
+ <xs:group ref="xhtml.col.content"/>
+ <xs:attributeGroup ref="xhtml.col.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.colgroup.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="span" type="xh11d:Number" default="1"/>
+ <xs:attribute name="width" type="xh11d:MultiLength"/>
+ <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.colgroup.content">
+ <xs:sequence>
+ <xs:element name="col" type="xhtml.col.type" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.colgroup.type">
+ <xs:group ref="xhtml.colgroup.content"/>
+ <xs:attributeGroup ref="xhtml.colgroup.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.tbody.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.tbody.content">
+ <xs:sequence>
+ <xs:element name="tr" type="xhtml.tr.type" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.tbody.type">
+ <xs:group ref="xhtml.tbody.content"/>
+ <xs:attributeGroup ref="xhtml.tbody.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.tfoot.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.tfoot.content">
+ <xs:sequence>
+ <xs:element name="tr" type="xhtml.tr.type" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.tfoot.type">
+ <xs:group ref="xhtml.tfoot.content"/>
+ <xs:attributeGroup ref="xhtml.tfoot.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.thead.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.thead.content">
+ <xs:sequence>
+ <xs:element name="tr" type="xhtml.tr.type" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.thead.type">
+ <xs:group ref="xhtml.thead.content"/>
+ <xs:attributeGroup ref="xhtml.thead.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.caption.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.caption.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.caption.type" mixed="true">
+ <xs:group ref="xhtml.caption.content"/>
+ <xs:attributeGroup ref="xhtml.caption.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.table.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="summary" type="xh11d:Text"/>
+ <xs:attribute name="width" type="xh11d:Length"/>
+ <xs:attribute name="border" type="xh11d:Pixels"/>
+ <xs:attributeGroup ref="xhtml.frame.attrib"/>
+ <xs:attributeGroup ref="xhtml.rules.attrib"/>
+ <xs:attribute name="cellspacing" type="xh11d:Length"/>
+ <xs:attribute name="cellpadding" type="xh11d:Length"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.table.content">
+ <xs:sequence>
+ <xs:element name="caption" type="xhtml.caption.type" minOccurs="0"/>
+ <xs:choice>
+ <xs:element name="col" type="xhtml.col.type" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="colgroup" type="xhtml.colgroup.type" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:choice>
+ <xs:choice>
+ <xs:sequence>
+ <xs:element name="thead" type="xhtml.thead.type" minOccurs="0"/>
+ <xs:element name="tfoot" type="xhtml.tfoot.type" minOccurs="0"/>
+ <xs:element name="tbody" type="xhtml.tbody.type" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:choice>
+ <xs:element name="tr" type="xhtml.tr.type" maxOccurs="unbounded"/>
+ </xs:choice>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.table.type">
+ <xs:group ref="xhtml.table.content"/>
+ <xs:attributeGroup ref="xhtml.table.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-text-1.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-text-1.xsd
new file mode 100644
index 00000000..432bdad7
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-text-1.xsd
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+ <xs:annotation>
+ <xs:documentation>
+ Textual Content
+ This is the XML Schema Text module for XHTML
+
+ The Text module includes declarations for all core
+ text container elements and their attributes.
+
+ + block phrasal
+ + block structural
+ + inline phrasal
+ + inline structural
+
+ $Id: xhtml-text-1.xsd,v 1.2 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_textmodule"/>
+ </xs:annotation>
+ <xs:include schemaLocation="xhtml-blkphras-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Block Phrasal module
+ Elements defined here:
+
+ * address, blockquote, pre, h1, h2, h3, h4, h5, h6
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include>
+ <xs:include schemaLocation="xhtml-blkstruct-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Block Structural module
+ Elements defined here:
+
+ * div, p
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include>
+ <xs:include schemaLocation="xhtml-inlphras-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Inline Phrasal module
+ Elements defined here:
+
+ * abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include>
+ <xs:include schemaLocation="xhtml-inlstruct-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Inline Structural module
+ Elements defined here:
+
+ * br,span
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include>
+</xs:schema>
diff --git a/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xml.xsd b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xml.xsd
new file mode 100644
index 00000000..eeb9db56
--- /dev/null
+++ b/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xml.xsd
@@ -0,0 +1,145 @@
+<?xml version='1.0'?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
+
+ <xs:annotation>
+ <xs:documentation>
+ See http://www.w3.org/XML/1998/namespace.html and
+ http://www.w3.org/TR/REC-xml for information about this namespace.
+
+ This schema document describes the XML namespace, in a form
+ suitable for import by other schema documents.
+
+ Note that local names in this namespace are intended to be defined
+ only by the World Wide Web Consortium or its subgroups. The
+ following names are currently defined in this namespace and should
+ not be used with conflicting semantics by any Working Group,
+ specification, or document instance:
+
+ base (as an attribute name): denotes an attribute whose value
+ provides a URI to be used as the base for interpreting any
+ relative URIs in the scope of the element on which it
+ appears; its value is inherited. This name is reserved
+ by virtue of its definition in the XML Base specification.
+
+ id (as an attribute name): denotes an attribute whose value
+ should be interpreted as if declared to be of type ID.
+ This name is reserved by virtue of its definition in the
+ xml:id specification.
+
+ lang (as an attribute name): denotes an attribute whose value
+ is a language code for the natural language of the content of
+ any element; its value is inherited. This name is reserved
+ by virtue of its definition in the XML specification.
+
+ space (as an attribute name): denotes an attribute whose
+ value is a keyword indicating what whitespace processing
+ discipline is intended for the content of the element; its
+ value is inherited. This name is reserved by virtue of its
+ definition in the XML specification.
+
+ Father (in any context at all): denotes Jon Bosak, the chair of
+ the original XML Working Group. This name is reserved by
+ the following decision of the W3C XML Plenary and
+ XML Coordination groups:
+
+ In appreciation for his vision, leadership and dedication
+ the W3C XML Plenary on this 10th day of February, 2000
+ reserves for Jon Bosak in perpetuity the XML name
+ xml:Father
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>This schema defines attributes and an attribute group
+ suitable for use by
+ schemas wishing to allow xml:base, xml:lang, xml:space or xml:id
+ attributes on elements they define.
+
+ To enable this, such a schema must import this schema
+ for the XML namespace, e.g. as follows:
+ &lt;schema . . .>
+ . . .
+ &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
+ Subsequently, qualified reference to any of the attributes
+ or the group defined below will have the desired effect, e.g.
+
+ &lt;type . . .>
+ . . .
+ &lt;attributeGroup ref="xml:specialAttrs"/>
+
+ will define a type which will schema-validate an instance
+ element with any of those attributes</xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>In keeping with the XML Schema WG's standard versioning
+ policy, this schema document will persist at
+ http://www.w3.org/2007/08/xml.xsd.
+ At the date of issue it can also be found at
+ http://www.w3.org/2001/xml.xsd.
+ The schema document at that URI may however change in the future,
+ in order to remain compatible with the latest version of XML Schema
+ itself, or with the XML namespace itself. In other words, if the XML
+ Schema or XML namespaces change, the version of this document at
+ http://www.w3.org/2001/xml.xsd will change
+ accordingly; the version at
+ http://www.w3.org/2007/08/xml.xsd will not change.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang">
+ <xs:annotation>
+ <xs:documentation>Attempting to install the relevant ISO 2- and 3-letter
+ codes as the enumerated possible values is probably never
+ going to be a realistic possibility. See
+ RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry
+ at http://www.iana.org/assignments/lang-tag-apps.htm for
+ further information.
+
+ The union allows for the 'un-declaration' of xml:lang with
+ the empty string.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:language">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value=""/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="default"/>
+ <xs:enumeration value="preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="base" type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
+ information about this attribute.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="id" type="xs:ID">
+ <xs:annotation>
+ <xs:documentation>See http://www.w3.org/TR/xml-id/ for
+ information about this attribute.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attributeGroup name="specialAttrs">
+ <xs:attribute ref="xml:base"/>
+ <xs:attribute ref="xml:lang"/>
+ <xs:attribute ref="xml:space"/>
+ <xs:attribute ref="xml:id"/>
+ </xs:attributeGroup>
+
+</xs:schema>
diff --git a/BKUViewer/src/main/resources/org/w3c/css/properties/Config.properties b/BKUViewer/src/main/resources/org/w3c/css/properties/Config.properties
new file mode 100644
index 00000000..0ece8cda
--- /dev/null
+++ b/BKUViewer/src/main/resources/org/w3c/css/properties/Config.properties
@@ -0,0 +1,32 @@
+# configuration file for org.w3c.css.parser.CssFouffa
+# Properties should be in the style directory
+
+# Is the parser should run in CSS2 ?
+extended-parser: true
+
+# the CssStyle to use
+#style for CSS1
+css1: org.w3c.css.properties.css1.Css1Style
+#style for CSS2 (and mobile profile and TV profile)
+css2: org.w3c.css.properties.css2.font.Css2Style
+#style for CSS2.1
+css21: org.w3c.css.properties.css21.Css21Style
+#style for CSS3
+css3: org.w3c.css.properties.css3.Css3Style
+#SVG styles
+svg : org.w3c.css.properties.svg.SVGStyle
+svgbasic : org.w3c.css.properties.svg.SVGBasicStyle
+svgtiny : org.w3c.css.properties.svg.SVGTinyStyle
+#ATSC style
+atsc-tv: org.w3c.css.properties.atsc.ATSCStyle
+#SLXHMTL
+slxhtml: at.gv.egiz.bku.slxhtml.css.SLXHTMLStyle
+
+#media
+media: Media.properties
+
+# file containing the properties files for each profile
+profilesProperties: ProfilesProperties.properties
+
+#default profile
+defaultProfile: css21
diff --git a/BKUViewer/src/main/resources/org/w3c/css/properties/ProfilesProperties.properties b/BKUViewer/src/main/resources/org/w3c/css/properties/ProfilesProperties.properties
new file mode 100644
index 00000000..8c2aded8
--- /dev/null
+++ b/BKUViewer/src/main/resources/org/w3c/css/properties/ProfilesProperties.properties
@@ -0,0 +1,30 @@
+# The list of properties to use
+
+# properties for CSS1
+css1 : CSS1Properties.properties
+
+# properties for CSS2
+css2 : CSS2Properties.properties
+
+# properties for CSS2.1
+css21 : CSS21Properties.properties
+
+# properties for CSS3
+css3 : CSS3Properties.properties
+
+# properties for mobile profile
+mobile : MobileProperties.properties
+
+# properties for ATSC TV profile
+atsc-tv : ATSCProperties.properties
+
+# properties for TV profile
+tv : TVProperties.properties
+
+# properties for SVG profiles
+svg : SVGProperties.properties
+svgbasic : SVGBasicProperties.properties
+svgtiny : SVGTinyProperties.properties
+
+# properties for SLXHTML profile
+slxhtml : SLXHTMLProperties.properties
diff --git a/BKUViewer/src/main/resources/org/w3c/css/properties/SLXHTMLProperties.properties b/BKUViewer/src/main/resources/org/w3c/css/properties/SLXHTMLProperties.properties
new file mode 100644
index 00000000..dec68c11
--- /dev/null
+++ b/BKUViewer/src/main/resources/org/w3c/css/properties/SLXHTMLProperties.properties
@@ -0,0 +1,641 @@
+# All properties for all media
+
+# CSS2 Properties
+
+# Margin spacing
+#
+# The margin-top, margin-bottom, margin-left and margin-right properties
+# must be supported by a Citizen Card Environment. Values specified as percentages
+# (cf. section 3.5.1.2) should be supported.
+#
+# The margin property may be supported by a Citizen Card Environment.
+#
+# An instance document must not contain a negative value in the properties mentioned
+# above. Otherwise it must be rejected by the Citizen Card Environment.
+
+margin-top: at.gv.egiz.bku.slxhtml.css.CssMarginTopSLXHTML
+margin-bottom: at.gv.egiz.bku.slxhtml.css.CssMarginBottomSLXHTML
+margin-left: at.gv.egiz.bku.slxhtml.css.CssMarginLeftSLXHTML
+margin-right: at.gv.egiz.bku.slxhtml.css.CssMarginRightSLXHTML
+margin: at.gv.egiz.bku.slxhtml.css.CssMarginSLXHTML
+
+# Padding spacing
+#
+# The padding-top, padding-bottom, padding-left and padding-right properties must be
+# supported by a Citizen Card Environment. Values specified as percentages (cf. section
+# 3.5.1.2) should be supported.
+#
+# The padding property may be supported by a Citizen Card Environment.
+#
+# An instance document must not contain a negative value in the properties
+# mentioned above. Otherwise it must be rejected by the Citizen Card Environment.
+
+padding-top: at.gv.egiz.bku.slxhtml.css.CssPaddingTopSLXHTML
+padding-bottom: at.gv.egiz.bku.slxhtml.css.CssPaddingBottomSLXHTML
+padding-left: at.gv.egiz.bku.slxhtml.css.CssPaddingLeftSLXHTML
+padding-right: at.gv.egiz.bku.slxhtml.css.CssPaddingRightSLXHTML
+padding: at.gv.egiz.bku.slxhtml.css.CssPaddingSLXHTML
+
+#
+# Borders
+#
+
+# Border width
+#
+# The border-top-width, border-bottom-width, border-left-width, border-right-width
+# and border-width properties should be supported by a Citizen Card Environment. If
+# the properties are supported, the predefined values thin, medium and thick should
+# also be supported (cf. [CSS 2], section 8.5.1).
+
+border-top-width: org.w3c.css.properties.css1.CssBorderTopWidthCSS2
+border-right-width: org.w3c.css.properties.css1.CssBorderRightWidthCSS2
+border-left-width: org.w3c.css.properties.css1.CssBorderLeftWidthCSS2
+border-bottom-width: org.w3c.css.properties.css1.CssBorderBottomWidthCSS2
+
+# Border colour
+#
+# The border-top-color, border-bottom-color, border-left-color, border-right-color
+# and border-color properties should be supported by a Citizen Card Environment. The
+# predefined value transparent for the border-color property may be supported (cf.
+# [CSS 2], section 8.5.2).
+
+border-top-color: at.gv.egiz.bku.slxhtml.css.CssBorderTopColorSLXHTML
+border-right-color: at.gv.egiz.bku.slxhtml.css.CssBorderRightColorSLXHTML
+border-left-color: at.gv.egiz.bku.slxhtml.css.CssBorderLeftColorSLXHTML
+border-bottom-color: at.gv.egiz.bku.slxhtml.css.CssBorderBottomColorSLXHTML
+
+# Border style
+#
+# The border-top-style, border-bottom-style, border-left-style, border-right-style and
+# border-style properties should be supported by a Citizen Card Environment. If the properties
+# are supported, the predefined values none, dashed, dotted, solid and double should also
+# be supported; all other values may be supported (cf. [CSS 2], section 8.5.3).
+
+border-top-style: org.w3c.css.properties.css1.CssBorderTopStyleCSS2
+border-right-style: org.w3c.css.properties.css1.CssBorderRightStyleCSS2
+border-left-style: org.w3c.css.properties.css1.CssBorderLeftStyleCSS2
+border-bottom-style: org.w3c.css.properties.css1.CssBorderBottomStyleCSS2
+
+# Shorthand
+#
+# The properties for the shorthand version of the border properties (border-top,
+# border-bottom, border-left, border-right and border (cf. [CSS 2], section 8.5.4)
+# should be supported by a Citizen Card Environment. The recommended values result
+# from the three previous sections.
+
+border-width: org.w3c.css.properties.css1.CssBorderWidthCSS2
+border-color: at.gv.egiz.bku.slxhtml.css.CssBorderColorSLXHTML
+border-style: org.w3c.css.properties.css1.CssBorderStyleCSS2
+border-top: org.w3c.css.properties.css1.CssBorderTopCSS2
+border-right: org.w3c.css.properties.css1.CssBorderRightCSS2
+border-left: org.w3c.css.properties.css1.CssBorderLeftCSS2
+border-bottom: org.w3c.css.properties.css1.CssBorderBottomCSS2
+border: at.gv.egiz.bku.slxhtml.css.CssBorderSLXHTML
+
+#
+# Positioning of boxes
+#
+
+# Box type
+#
+# The property for controlling the box type (display) may be supported by a Citizen
+# Card Environment (cf. [CSS 2], section 9.2).
+
+display: org.w3c.css.properties.css1.CssDisplayCSS2
+
+# Positioning scheme
+#
+# The property for defining the positioning scheme for a box (position, cf. [CSS 2],
+# section 9.3) must not be contained in an instance document to prevent content
+# from overlapping. Otherwise the instance document must be rejected by the Citizen
+# Card Environment.
+
+#! position: org.w3c.css.properties.css1.CssPosition
+
+# Box spacing
+#
+# The property for defining the positioning scheme for a box (top, bottom, left, right;
+# cf. [CSS 2], section 9.3) must not be contained in an instance document to prevent
+# content from overlapping. Otherwise the instance document must be rejected by the
+# Citizen Card Environment.
+
+#! top: org.w3c.css.properties.css1.CssTop
+#! right: org.w3c.css.properties.css1.CssRight
+#! left: org.w3c.css.properties.css1.CssLeft
+#! bottom: org.w3c.css.properties.css1.CssBottom
+
+# Flow around boxes
+#
+# The properties for defining the flow around boxes (float, clear) may be supported by
+# a Citizen Card Environment (cf. [CSS 2], section 9.5).
+
+float: org.w3c.css.properties.css1.CssFloat
+clear: org.w3c.css.properties.css1.CssClear
+
+# Positioning of boxes on the z-axis
+#
+# The property for defining the positioning of boxes on the z-axis (z-index, cf. [CSS 2],
+# section 9.9) must not be contained in an instance document to prevent content from
+# overlapping. Otherwise the instance document must be rejected by the Citizen Card Environment.
+
+#! z-index: org.w3c.css.properties.css1.CssZIndex
+
+# Text direction
+#
+# The properties for controlling the text direction (direction, unicode-bidi) may be
+# supported by a Citizen Card Environment (cf. [CSS 2], section 9.10).
+
+direction: org.w3c.css.properties.css1.CssDirection
+unicode-bidi: org.w3c.css.properties.css1.CssUnicodeBidi
+
+#
+# Displaying boxes
+#
+
+# Width and height
+#
+# The properties for specifying the width and height of a box (width, height, cf. [CSS 2],
+# sections 10.2 and 10.5) must not be supported by a Citizen Card Environment to prevent
+# content from overlapping. Otherwise the instance document must be rejected by the
+# Citizen Card Environment.
+#
+# The properties for specifying the minimum width and height of a box (min-width, min-height)
+# may be supported by a Citizen Card Environment (cf. [CSS 2], sections 10.4 and 10.7).
+#
+# The properties for specifying the maximum width and height of a box (max-width, max-height,
+# cf. [CSS 2], sections 10.4 and 10.7) must not be supported by a Citizen Card Environment
+# to prevent content from overlapping. Otherwise the instance document must be rejected by
+# the Citizen Card Environment.
+
+#! width: org.w3c.css.properties.css1.CssWidth
+min-width: org.w3c.css.properties.css1.CssMinWidth
+#! max-width: org.w3c.css.properties.css1.CssMaxWidth
+min-height: org.w3c.css.properties.css1.CssMinHeight
+#! max-height: org.w3c.css.properties.css1.CssMaxHeight
+#! height: org.w3c.css.properties.css1.CssHeight
+
+# Line height
+#
+# The properties for specifying the line height (line-height, vertical-align) should be
+# supported by a Citizen Card (cf. [CSS 2], section 10.8). The only exception is the
+# vertical-align property: In this case a Citizen Card Environment must be able to interpret
+# the values sub and super.
+
+line-height: org.w3c.css.properties.css1.CssLineHeightCSS2
+vertical-align: org.w3c.css.properties.css1.CssVerticalAlign
+
+#
+# Visible area in boxes
+#
+
+# The property for specifying the visibility of a box (visibility) may be supported by a
+# Citizen Card Environment (cf. [CSS 2], section 11).
+#
+# The properties for controlling the visible area of a box (overflow, clip; cf. [CSS 2],
+# section 11) must not be contained in an instance document to prevent hidden content. Otherwise
+# the instance document must be rejected by the Citizen Card Environment.
+
+#! overflow: org.w3c.css.properties.css1.CssOverflow
+#! clip: org.w3c.css.properties.css1.CssClip
+visibility: org.w3c.css.properties.css1.CssVisibility
+
+#
+# Generated content, numbering, lists
+#
+
+# Generated content
+#
+# The property for generating content (content) may be supported by a Citizen Card Environment
+# (cf. [CSS 2], section 12.2).
+
+content: org.w3c.css.properties.css1.CssContentCSS2
+
+# Displaying quotation marks
+#
+# The property for displaying quotation marks (quotes) may be supported by a Citizen Card
+# Environment (cf. [CSS 2], section 12.3).
+
+quotes: org.w3c.css.properties.css1.CssQuotes
+
+# Numbering
+#
+# The properties for automatic numbering (counter-reset, counter-increment) may be supported
+# by a Citizen Card Environment (cf. [CSS 2], section 12.5).
+
+counter-reset: org.w3c.css.properties.css1.CssCounterReset
+counter-increment: org.w3c.css.properties.css1.CssCounterIncrement
+
+#
+# Markers and lists
+#
+
+# Marker spacing
+#
+# The property for defining the space between a marker and the associated box
+# (marker-offset) may be supported by a Citizen Card Environment (cf. [CSS 2],
+# section 12.6.1).
+
+marker-offset: org.w3c.css.properties.css1.CssMarkerOffset
+
+# List symbols
+#
+# For the property for selecting the list symbol (list-style-type) a Citizen
+# Card Environment must support the values none, disc, circle, square, decimal,
+# decimal-leading-zero, lower-roman, upper-roman, lower-alpha, lower-latin,
+# upper-alpha and upper-latin. The other values may be supported (cf. [CSS 2],
+# section 12.6.2).
+
+list-style-type: org.w3c.css.properties.css1.CssListStyleTypeCSS2
+
+# Position of the list symbol
+#
+# The property for positioning the list symbol in relation to the associated box
+# (list-style-position) should be supported by a Citizen Card Environment (cf. [CSS 2],
+# section 12.6.2).
+
+list-style-position: org.w3c.css.properties.css1.CssListStylePositionCSS2
+
+# Image as a list symbol
+#
+# The property for selecting an image as a list symbol (list-style-image) may be supported
+# by a Citizen Card Environment (cf. [CSS 2], section 12.6.2). If the Citizen Card Environment
+# supports this property, then it must proceed in respect of the integration of the image
+# in the signature as described in section 2.1.7.
+
+# optional, not supported:
+#! list-style-image: org.w3c.css.properties.css1.CssListStyleImageCSS2
+
+# Shorthand
+#
+# The property for the shorthand version of the list properties (list-style) should be supported
+# by a Citizen Card Environment. The recommended values result from the explanations for the
+# list-style-type, list-style-position and list-style-image properties above (cf. [CSS 2],
+# section 12.6.2).
+
+list-style: org.w3c.css.properties.css1.CssListStyleCSS2
+
+# Page-based media
+#
+# The properties for page-based media may be supported by a Citizen Card Environment (size, marks,
+# page-break-before, page-break-inside, page-break-after, page, orphans and widows (cf. [CSS 2],
+# section 13).
+
+page-break-before: org.w3c.css.properties.paged.PageBreakBefore
+page-break-after: org.w3c.css.properties.paged.PageBreakAfter
+page-break-inside: org.w3c.css.properties.paged.PageBreakInside
+page: org.w3c.css.properties.paged.Page
+orphans: org.w3c.css.properties.paged.Orphans
+widows: org.w3c.css.properties.paged.Widows
+
+@page.size: org.w3c.css.properties.paged.Size
+@page.marks: org.w3c.css.properties.paged.Marks
+@page.page-break-before: org.w3c.css.properties.paged.PageBreakBefore
+@page.page-break-after: org.w3c.css.properties.paged.PageBreakAfter
+@page.page-break-inside: org.w3c.css.properties.paged.PageBreakInside
+@page.page: org.w3c.css.properties.paged.Page
+@page.orphans: org.w3c.css.properties.paged.Orphans
+@page.widows: org.w3c.css.properties.paged.Widows
+
+
+#
+# Colours and background
+#
+
+# A Citizen Card Environment must support all the options for specifying a colour listed in [CSS 2],
+# section 4.3.6 for a CSS property, if such an option is available for this property according to [CSS 2].
+#
+# The exceptions are the system colours (cf. [CSS 2], section 18.2); these must not be used in an
+# instance document so as to prevent dependencies on the system environment. Otherwise the instance
+# document must be rejected by the Citizen Card Environment.
+
+# Colour
+
+# The property for defining the foreground colour of the content of an element (color) must be
+# supported by a Citizen Card Environment (cf. [CSS 2], section 14.1).
+
+color: at.gv.egiz.bku.slxhtml.css.CssColorSLXHTML
+
+# Background
+#
+# The property for defining the background colour of the content of an element (background-color)
+# must be supported by a Citizen Card Environment (cf. [CSS 2], section 14.2.1).
+#
+# The properties for selecting and controlling an image as background (background-image, background-repeat,
+# background-position, background-attachment; cf. [CSS 2], section 14.2.1) must not be contained in an
+# instance document to prevent content from overlapping. Otherwise the instance document must be
+# rejected by the Citizen Card Environment.
+
+# The property for the shorthand version of the background properties (background) should be supported
+# by a Citizen Card Environment. The recommended values result from the explanations for the background-color
+# property above (cf. [CSS 2], section 14.2.1). If the property contains values for selecting and controlling
+# an image as background, the instance document must be rejected by the Citizen Card Environment.
+
+background-color: at.gv.egiz.bku.slxhtml.css.CssBackgroundColorSLXHTML
+#! background-image: org.w3c.css.properties.css1.CssBackgroundImageCSS2
+#! background-repeat: org.w3c.css.properties.css1.CssBackgroundRepeatCSS2
+#! background-attachment: org.w3c.css.properties.css1.CssBackgroundAttachmentCSS2
+#! background-position: org.w3c.css.properties.css1.CssBackgroundPositionCSS2
+background: at.gv.egiz.bku.slxhtml.css.CssBackgroundSLXHTML
+
+#
+# Fonts
+#
+#
+# For the property for selecting a font family (font-family), a Citizen Card Environment must
+# support the predefined values serif, sans-serif and monospaced for the general font families.
+# All other values may be supported by a Citizen Card Environment (cf. [CSS 2], section 15.2.2).
+#
+# If a preferred font family is specified in the instance document that cannot be displayed by the
+# Citizen Card Environment, then the Citizen Card Environment may still display the instance
+# document if another displayable font family has been specified as an alternative. For example,
+# if the specification in the instance document is font-family: "Times New Roman", serif, then the
+# Citizen Card Environment may display the instance document in the secure viewer even if it does
+# not know the Times New Roman font family (as it must always support serif).
+
+font-family: org.w3c.css.properties.css1.CssFontFamilyCSS2
+
+# Font style
+#
+# The properties for defining the font style (font-style) and font weight (font-weight)
+# must be supported by a Citizen Card Environment. The values normal and italic must be supported,
+# while the value oblique should be supported.
+#
+# The property for defining the font variant (font-variant) should be supported by a Citizen Card
+# Environment, while the property for defining the font stretch (font-stretch) may be supported
+# by a Citizen Card Environment (cf. [CSS 2], section 15.2.3).
+
+font-style: org.w3c.css.properties.css1.CssFontStyleCSS2
+font-weight: org.w3c.css.properties.css1.CssFontWeightCSS2
+font-variant: org.w3c.css.properties.css1.CssFontVariantCSS2
+font-stretch: org.w3c.css.properties.css1.CssFontStretchCSS2
+
+# Font size
+#
+# The property for specifying the font size (font-size) must be supported by a Citizen
+# Card Environment. The property for specifying the stretch ratio (font-size-adjust) may
+# be supported by a Citizen Card Environment (cf. [CSS 2], section 15.2.4).
+
+font-size: org.w3c.css.properties.css1.CssFontSizeCSS2
+font-size-adjust: org.w3c.css.properties.css1.CssFontSizeAdjustCSS2
+
+# Shorthand
+#
+# The property for the shorthand version of the font properties (font) should be supported by
+# a Citizen Card Environment (cf. [CSS 2], section 15.2.5). The recommended values result from
+# the explanations above for the font-style, font-variant, font-weight, font-size and font-family
+# properties and the explanations for the line-height property in section 3.5.4.2.
+#
+# The additional, predefined values relating to the system fonts used (caption, icon, etc.) must
+# not be contained in an instance document so as to prevent dependencies on the system environment.
+# Otherwise the instance document must be rejected by the Citizen Card Environment.
+
+font: at.gv.egiz.bku.slxhtml.css.CssFontSLXHTML
+
+#
+# Displaying text
+#
+
+# Non-displayable characters
+#
+# If the text of an instance document contains a character that cannot be displayed by the
+# Citizen Card Environment, then the instance document must be rejected by the Citizen Card
+# Environment. The character must not be represented by a placeholder.
+
+# FIXME: How to implement?!
+
+# Indent
+#
+# The property for indenting the first line of a text block (text-indent) should be supported
+# by a Citizen Card Environment (cf. [CSS 2], section 16.1).
+
+text-indent: org.w3c.css.properties.css1.CssTextIndent
+
+# Alignment
+#
+# For the property for aligning the content of a text block (text-align) a Citizen Card Environment
+# must support the values left, right and center. The value justified should be supported,
+# while the specification of a string value may be supported (cf. [CSS 2], section 16.2).
+
+text-align: org.w3c.css.properties.css1.CssTextAlign
+
+# Text decoration
+#
+# For the property for decorating a text (text-decoration; cf. [CSS 2], section 16.3.1) a
+# Citizen Card Environment must support the values none, underline and line-through.
+#
+# The value blink must not be contained in an instance document. Otherwise the instance
+# document must be rejected by the Citizen Card Environment.
+#
+# The other values may be supported by a Citizen Card Environment.
+
+text-decoration: at.gv.egiz.bku.slxhtml.css.CssTextDecorationSLXHTML
+
+# Shadows
+#
+# The property for specifying a text shadow (text-shadow) may be supported by a Citizen Card
+# Environment (cf. [CSS 2], section 16.3.2).
+
+text-shadow: org.w3c.css.properties.css1.CssTextShadow
+
+# Word and letter spacing
+#
+# The word-spacing and letter-spacing should be supported by a Citizen Card Environment
+# (cf. [CSS 2], section 16.4).
+#
+# An instance document must not contain negative values in order to prevent content from
+# overlapping. Otherwise the instance document must be rejected by the Citizen Card Environment.
+
+word-spacing: at.gv.egiz.bku.slxhtml.css.CssWordSpacingSLXHTML
+letter-spacing: at.gv.egiz.bku.slxhtml.css.CssLetterSpacingSLXHTML
+
+# Capitalisation
+#
+# The property for specifying the capitalisation of the text of an element (text-transform)
+# may be supported by a Citizen Card Environment (cf. [CSS 2], section 16.5).
+
+text-transform: org.w3c.css.properties.css1.CssTextTransform
+
+# White space
+#
+# The property for the handling of white space within the text of an element (white-space) should
+# be supported by a Citizen Card Environment (cf. [CSS 2], section 16.6).
+
+white-space: org.w3c.css.properties.css1.CssWhiteSpace
+
+#
+# Tables
+#
+
+# Position of caption
+#
+# A Citizen Card Environment should support the top and bottom properties for the property for
+# specifying the position when labelling a table (caption-side); the properties left and right
+# may be supported (cf. [CSS 2], section 17.4.1).
+
+caption-side: org.w3c.css.properties.css2.table.CaptionSide
+
+# Layout algorithm
+#
+# The property for defining the layout algorithm for a table (table-layout) may be supported by
+# a Citizen Card Environment (cf. [CSS 2], section 17.5.2).
+#
+# However, the fixed value must not be supported because the layout algorithm selected with it can
+# cause content to overlap.
+#
+# In general, the viewer component of the Citizen Card Environment must use a layout algorithm for a
+# table that does not generate an overflow, in other words with which the content of every table
+# element can be rendered so that it does not extend beyond the confines of the table element.
+# There is an example of such an algorithm in [CSS 2], section 17.5.2, subsection Automatic table layout.
+
+table-layout: at.gv.egiz.bku.slxhtml.css.TableLayoutSLXHTML
+row-span: org.w3c.css.properties.css2.table.RowSpan
+column-span: org.w3c.css.properties.css2.table.ColumnSpan
+
+# Borders
+#
+# The properties for displaying borders in tables (border-collapse, border-spacing, empty-cells) may
+# be supported by a Citizen Card Environment (cf. [CSS 2], section 17.6).
+
+border-collapse: org.w3c.css.properties.css2.table.BorderCollapse
+border-spacing: org.w3c.css.properties.css2.table.BorderSpacing
+empty-cells: org.w3c.css.properties.css2.table.EmptyCells
+
+# Voice output
+#
+# The property for controlling the voice output of the column headers in a table (speak-header) may
+# be supported by a Citizen Card Environment (cf. [CSS 2], section 17.7.1).
+
+speak-header: org.w3c.css.properties.css2.table.SpeakHeader
+
+#
+# User interface
+#
+
+# Cursor format
+#
+# The property for controlling the cursor format (cursor; cf. [CSS 2], section 18.1) must not be
+# contained in an instance document. Otherwise the instance document must be rejected by the Citizen
+# Card Environment.
+
+#! cursor: org.w3c.css.properties.css2.user.CursorCSS2
+
+# Contours
+#
+# The properties for defining element contours (outline-width, outline-style, outline-color and
+# outline; cf. [CSS 2], section 18.4) must not be contained in an instance document. Otherwise the
+# instance document must be rejected by the Citizen Card Environment.
+
+#! outline: org.w3c.css.properties.css2.user.Outline
+#! outline-width: org.w3c.css.properties.css2.user.OutlineWidth
+#! outline-style: org.w3c.css.properties.css2.user.OutlineStyle
+#! outline-color: org.w3c.css.properties.css2.user.OutlineColor
+
+#
+# Aural Properties
+#
+# The properties for the voice output of a document (cf. [CSS 2], section 19) may be supported
+# by a Citizen Card Environment.
+
+volume: org.w3c.css.properties.aural.ACssVolume
+pause-before: org.w3c.css.properties.aural.ACssPauseBefore
+pause-after: org.w3c.css.properties.aural.ACssPauseAfter
+pause: org.w3c.css.properties.aural.ACssPause
+cue-before: org.w3c.css.properties.aural.ACssCueBefore
+cue-after: org.w3c.css.properties.aural.ACssCueAfter
+cue: org.w3c.css.properties.aural.ACssCue
+play-during: org.w3c.css.properties.aural.ACssPlayDuring
+voice-family: org.w3c.css.properties.aural.ACssVoiceFamily
+elevation: org.w3c.css.properties.aural.ACssElevation
+speech-rate: org.w3c.css.properties.aural.ACssSpeechRate
+pitch: org.w3c.css.properties.aural.ACssPitch
+pitch-range: org.w3c.css.properties.aural.ACssPitchRange
+stress: org.w3c.css.properties.aural.ACssStress
+richness: org.w3c.css.properties.aural.ACssRichness
+speak-punctuation: org.w3c.css.properties.aural.ACssSpeakPunctuation
+speak-date: org.w3c.css.properties.aural.ACssSpeakDate
+speak-numeral: org.w3c.css.properties.aural.ACssSpeakNumeral
+speak-time: org.w3c.css.properties.aural.ACssSpeakTime
+speak: org.w3c.css.properties.aural.ACssSpeak
+azimuth: org.w3c.css.properties.aural.ACssAzimuth
+
+#
+# @page
+#
+# The @page rule for defining the page properties for page-based output media may be
+# supported by a Citizen Card Environment (cf. [CSS 2], section 13, and section 3.5.7
+# of this document).
+#
+
+@page.margin-top: org.w3c.css.properties.css1.CssMarginTop
+@page.margin-bottom: org.w3c.css.properties.css1.CssMarginBottom
+@page.margin-left: org.w3c.css.properties.css1.CssMarginLeft
+@page.margin-right: org.w3c.css.properties.css1.CssMarginRight
+@page.margin: org.w3c.css.properties.css1.CssMargin
+@page.padding-top: org.w3c.css.properties.css1.CssPaddingTop
+@page.padding-bottom: org.w3c.css.properties.css1.CssPaddingBottom
+@page.padding-left: org.w3c.css.properties.css1.CssPaddingLeft
+@page.padding-right: org.w3c.css.properties.css1.CssPaddingRight
+@page.padding: org.w3c.css.properties.css1.CssPadding
+@page.border-top-width: org.w3c.css.properties.css1.CssBorderTopWidthCSS2
+@page.border-right-width: org.w3c.css.properties.css1.CssBorderRightWidthCSS2
+@page.border-left-width: org.w3c.css.properties.css1.CssBorderLeftWidthCSS2
+@page.border-bottom-width: org.w3c.css.properties.css1.CssBorderBottomWidthCSS2
+@page.border-top-color: org.w3c.css.properties.css1.CssBorderTopColorCSS2
+@page.border-right-color: org.w3c.css.properties.css1.CssBorderRightColorCSS2
+@page.border-left-color: org.w3c.css.properties.css1.CssBorderLeftColorCSS2
+@page.border-bottom-color: org.w3c.css.properties.css1.CssBorderBottomColorCSS2
+@page.border-top-style: org.w3c.css.properties.css1.CssBorderTopStyleCSS2
+@page.border-right-style: org.w3c.css.properties.css1.CssBorderRightStyleCSS2
+@page.border-left-style: org.w3c.css.properties.css1.CssBorderLeftStyleCSS2
+@page.border-bottom-style: org.w3c.css.properties.css1.CssBorderBottomStyleCSS2
+@page.border-width: org.w3c.css.properties.css1.CssBorderWidthCSS2
+@page.border-color: org.w3c.css.properties.css1.CssBorderColorCSS2
+@page.border-style: org.w3c.css.properties.css1.CssBorderStyleCSS2
+@page.border-top: org.w3c.css.properties.css1.CssBorderTopCSS2
+@page.border-right: org.w3c.css.properties.css1.CssBorderRightCSS2
+@page.border-left: org.w3c.css.properties.css1.CssBorderLeftCSS2
+@page.border-bottom: org.w3c.css.properties.css1.CssBorderBottomCSS2
+@page.border: org.w3c.css.properties.css1.CssBorderCSS2
+@page.display: org.w3c.css.properties.css1.CssDisplayCSS2
+@page.position: org.w3c.css.properties.css1.CssPosition
+@page.z-index: org.w3c.css.properties.css1.CssZIndex
+@page.direction: org.w3c.css.properties.css1.CssDirection
+@page.unicode-bidi: org.w3c.css.properties.css1.CssUnicodeBidi
+@page.top: org.w3c.css.properties.css1.CssTop
+@page.right: org.w3c.css.properties.css1.CssRight
+@page.left: org.w3c.css.properties.css1.CssLeft
+@page.bottom: org.w3c.css.properties.css1.CssBottom
+@page.float: org.w3c.css.properties.css1.CssFloat
+@page.clear: org.w3c.css.properties.css1.CssClear
+
+#
+# @font-face
+#
+# The @font-face rule for describing or referencing additional font families (cf. [CSS 2],
+# section 15.3) must not be used in an instance document. The viewer component of the Citizen
+# Card Environment must reject an instance document containing a @font-face rule.
+
+#! @font-face.font-style: org.w3c.css.properties.css2.font.FontStyle
+#! @font-face.font-variant: org.w3c.css.properties.css2.font.FontVariant
+#! @font-face.font-weight: org.w3c.css.properties.css2.font.FontWeight
+#! @font-face.font-size: org.w3c.css.properties.css2.font.FontSize
+#! @font-face.font-family: org.w3c.css.properties.css2.font.FontFamily
+#! @font-face.font-stretch: org.w3c.css.properties.css2.font.FontStretch
+#! @font-face.unicode-range: org.w3c.css.properties.css2.font.UnicodeRange
+#! @font-face.units-per-em: org.w3c.css.properties.css2.font.UnitsPerEm
+#! @font-face.src: org.w3c.css.properties.css2.font.Src
+#! @font-face.panose-1: org.w3c.css.properties.css2.font.Panose1
+#! @font-face.stemv: org.w3c.css.properties.css2.font.Stemv
+#! @font-face.stemh: org.w3c.css.properties.css2.font.Stemh
+#! @font-face.slope: org.w3c.css.properties.css2.font.Slope
+#! @font-face.cap-height: org.w3c.css.properties.css2.font.CapHeight
+#! @font-face.x-hegiht: org.w3c.css.properties.css2.font.XHeight
+#! @font-face.widths: org.w3c.css.properties.css2.font.Widths
+#! @font-face.ascent: org.w3c.css.properties.css2.font.Ascent
+#! @font-face.descent: org.w3c.css.properties.css2.font.Descent
+#! @font-face.bbox: org.w3c.css.properties.css2.font.Bbox
+#! @font-face.baseline: org.w3c.css.properties.css2.font.Baseline
+#! @font-face.centerline: org.w3c.css.properties.css2.font.Centerline
+#! @font-face.definition-src: org.w3c.css.properties.css2.font.DefinitionSrc
+#! @font-face.mathline: org.w3c.css.properties.css2.font.Mathline
+#! @font-face.topline: org.w3c.css.properties.css2.font.Topline
diff --git a/BKUViewer/src/test/java/at/gv/egiz/bku/slxhtml/ValidatorTest.java b/BKUViewer/src/test/java/at/gv/egiz/bku/slxhtml/ValidatorTest.java
new file mode 100644
index 00000000..38c64262
--- /dev/null
+++ b/BKUViewer/src/test/java/at/gv/egiz/bku/slxhtml/ValidatorTest.java
@@ -0,0 +1,66 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml;
+
+import static org.junit.Assert.*;
+
+import java.io.InputStream;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Test;
+
+import at.gv.egiz.bku.viewer.ValidationException;
+import at.gv.egiz.bku.viewer.Validator;
+import at.gv.egiz.bku.viewer.ValidatorFactory;
+
+
+public class ValidatorTest {
+
+ private static Log log = LogFactory.getLog(ValidatorTest.class);
+
+ @Test
+ public void testGetInstance() {
+
+ Validator validator = ValidatorFactory.newValidator("application/xhtml+xml");
+
+ assertNotNull(validator);
+
+ }
+
+ @Test
+ public void testValidate() throws ValidationException {
+
+ String slxhtmlFile = "at/gv/egiz/bku/slxhtml/test.xhtml";
+
+ Validator validator = ValidatorFactory.newValidator("application/xhtml+xml");
+
+ ClassLoader cl = ValidatorTest.class.getClassLoader();
+ InputStream slxhtml = cl.getResourceAsStream(slxhtmlFile);
+ long t0 = System.currentTimeMillis();
+ try {
+ validator.validate(slxhtml, null);
+ } catch (ValidationException e) {
+ e.printStackTrace();
+ throw e;
+ }
+ long t1 = System.currentTimeMillis();
+ log.info("Validated SLXHTML file '" + slxhtmlFile + "' in " + (t1 - t0) + "ms.");
+
+ }
+
+}
diff --git a/BKUViewer/src/test/java/at/gv/egiz/bku/slxhtml/css/CssValidatorTest.java b/BKUViewer/src/test/java/at/gv/egiz/bku/slxhtml/css/CssValidatorTest.java
new file mode 100644
index 00000000..2b4740f9
--- /dev/null
+++ b/BKUViewer/src/test/java/at/gv/egiz/bku/slxhtml/css/CssValidatorTest.java
@@ -0,0 +1,75 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.slxhtml.css;
+
+import static org.junit.Assert.*;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.Locale;
+import java.util.Properties;
+import java.util.Set;
+
+import org.junit.Test;
+
+import at.gv.egiz.bku.viewer.ValidationException;
+
+public class CssValidatorTest {
+
+ @Test
+ public void testProperties() throws IOException {
+
+ ClassLoader cs = CssValidatorTest.class.getClassLoader();
+ InputStream is = cs.getResourceAsStream("org/w3c/css/properties/SLXHTMLProperties.properties");
+
+ assertNotNull(is);
+
+ Properties cssProperties = new Properties();
+ cssProperties.load(is);
+
+ Set<String> names = cssProperties.stringPropertyNames();
+ for (String name : names) {
+ String className = cssProperties.getProperty(name);
+ try {
+ Class.forName(className);
+ } catch (ClassNotFoundException e) {
+ fail("Implementation class '" + className + "' for property '" + name + "' not found.");
+ }
+
+ }
+
+ }
+
+ @Test(expected=ValidationException.class)
+ public void testValidator() throws UnsupportedEncodingException, ValidationException {
+
+ String css = "@charset \"ABCDEFG\";\n" +
+ " @import url(http://test.abc/test); * { color: black }";
+ ByteArrayInputStream input = new ByteArrayInputStream(css.getBytes("UTF-8"));
+
+ CSSValidatorSLXHTML validator = new CSSValidatorSLXHTML();
+
+ Locale locale = new Locale("de");
+
+ validator.validate(input, locale, "Test", 10);
+
+ }
+
+
+}
diff --git a/BKUViewer/src/test/resources/at/gv/egiz/bku/slxhtml/test.xhtml b/BKUViewer/src/test/resources/at/gv/egiz/bku/slxhtml/test.xhtml
new file mode 100644
index 00000000..cbd29551
--- /dev/null
+++ b/BKUViewer/src/test/resources/at/gv/egiz/bku/slxhtml/test.xhtml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml">
+ <xhtml:head>
+ <xhtml:title>Ein einfaches SLXHTML-Dokument</xhtml:title>
+ <xhtml:style type="text/css">@font-face { color: red }; p { color: red; }</xhtml:style>
+ </xhtml:head>
+ <xhtml:body>
+ <xhtml:p>Ich bin ein einfacher Text in rot.</xhtml:p>
+ </xhtml:body>
+</xhtml:html>
diff --git a/BKUViewer/src/test/resources/commons-logging.properties b/BKUViewer/src/test/resources/commons-logging.properties
new file mode 100644
index 00000000..29292562
--- /dev/null
+++ b/BKUViewer/src/test/resources/commons-logging.properties
@@ -0,0 +1 @@
+org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
diff --git a/BKUViewer/src/test/resources/log4j.properties b/BKUViewer/src/test/resources/log4j.properties
new file mode 100644
index 00000000..053eac17
--- /dev/null
+++ b/BKUViewer/src/test/resources/log4j.properties
@@ -0,0 +1,19 @@
+# loglever DEBUG, appender STDOUT
+log4j.rootLogger=TRACE, STDOUT
+#log4j.logger.at.gv.egiz.slbinding.RedirectEventFilter=DEBUG, STDOUT
+
+# STDOUT appender
+log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
+log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
+#log4j.appender.STDOUT.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %20c | %10t | %m%n
+#log4j.appender.STDOUT.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
+log4j.appender.STDOUT.layout.ConversionPattern=%-5p |%d | %t | %c %x- %m%n
+
+### FILE appender
+#log4j.appender.file=org.apache.log4j.RollingFileAppender
+#log4j.appender.file.maxFileSize=100KB
+#log4j.appender.file.maxBackupIndex=9
+#log4j.appender.file.File=egovbus_ca.log
+#log4j.appender.file.threshold=info
+#log4j.appender.file.layout=org.apache.log4j.PatternLayout
+#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n \ No newline at end of file
diff --git a/bkucommon/pom.xml b/bkucommon/pom.xml
index 2ccf0766..2db0cc84 100644
--- a/bkucommon/pom.xml
+++ b/bkucommon/pom.xml
@@ -1,7 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>bku</artifactId>
<groupId>at.gv.egiz</groupId>
@@ -42,10 +40,13 @@
<artifactId>commons-httpclient</artifactId>
<scope>compile</scope>
</dependency>
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </dependency>
<dependency>
<groupId>xalan</groupId>
<artifactId>xalan</artifactId>
- <version>2.7.0</version>
</dependency>
<dependency>
<groupId>iaik</groupId>
diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/InputStreamPartSource.java b/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/InputStreamPartSource.java
index 253f8ff5..1a22f787 100644
--- a/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/InputStreamPartSource.java
+++ b/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/InputStreamPartSource.java
@@ -14,11 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-
package at.gv.egiz.bku.binding.multipart;
import java.io.IOException;
diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/SLResultPart.java b/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/SLResultPart.java
index 566b77b3..5585f02e 100644
--- a/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/SLResultPart.java
+++ b/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/SLResultPart.java
@@ -14,11 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-
package at.gv.egiz.bku.binding.multipart;
import at.gv.egiz.bku.slcommands.SLResult;
diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureCommandImpl.java b/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureCommandImpl.java
index 136fa6f3..628326cf 100644
--- a/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureCommandImpl.java
+++ b/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureCommandImpl.java
@@ -44,7 +44,9 @@ import at.gv.egiz.bku.slcommands.impl.xsect.IdValueFactory;
import at.gv.egiz.bku.slcommands.impl.xsect.IdValueFactoryImpl;
import at.gv.egiz.bku.slcommands.impl.xsect.Signature;
import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.bku.slexceptions.SLException;
import at.gv.egiz.bku.slexceptions.SLRequestException;
+import at.gv.egiz.bku.slexceptions.SLViewerException;
import at.gv.egiz.dom.DOMUtils;
import at.gv.egiz.stal.InfoboxReadRequest;
import at.gv.egiz.stal.InfoboxReadResponse;
@@ -166,9 +168,10 @@ public class CreateXMLSignatureCommandImpl extends SLCommandImpl<CreateXMLSignat
* Signs the signature.
*
* @throws SLCommandException
- * if signing the signature fails
+ * if signing the signature fails
+ * @throws SLViewerException
*/
- private void signXMLSignature() throws SLCommandException {
+ private void signXMLSignature() throws SLCommandException, SLViewerException {
try {
signature.sign(getCmdCtx().getSTAL(), keyboxIdentifier);
@@ -213,11 +216,9 @@ public class CreateXMLSignatureCommandImpl extends SLCommandImpl<CreateXMLSignat
return new CreateXMLSignatureResultImpl(signature.getDocument());
- } catch (SLCommandException e) {
+ } catch (SLException e) {
return new ErrorResultImpl(e);
- } catch (SLRequestException e) {
- return new ErrorResultImpl(e);
- }
+ }
}
@Override
diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/DataObject.java b/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/DataObject.java
index d25f2526..ae4918ce 100644
--- a/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/DataObject.java
+++ b/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/DataObject.java
@@ -30,6 +30,7 @@ import java.nio.charset.Charset;
import java.security.InvalidAlgorithmParameterException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -71,8 +72,12 @@ import at.gv.egiz.bku.binding.HttpUtil;
import at.gv.egiz.bku.slexceptions.SLCommandException;
import at.gv.egiz.bku.slexceptions.SLRequestException;
import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+import at.gv.egiz.bku.slexceptions.SLViewerException;
import at.gv.egiz.bku.utils.urldereferencer.StreamData;
import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer;
+import at.gv.egiz.bku.viewer.ValidationException;
+import at.gv.egiz.bku.viewer.Validator;
+import at.gv.egiz.bku.viewer.ValidatorFactory;
import at.gv.egiz.dom.DOMUtils;
import at.gv.egiz.slbinding.impl.XMLContentType;
@@ -99,10 +104,51 @@ public class DataObject {
*/
private static final String[] DEFAULT_PREFFERED_MIME_TYPES =
new String[] {
- "application/xhtml+xml",
- "text/plain"
- };
-
+ "text/plain",
+ "application/xhtml+xml"
+ };
+
+ /**
+ * Validate hash input.
+ */
+ private static boolean validate = false;
+
+ /**
+ * Enable validation of hash data input.
+ *
+ * @param validate
+ * <code>true</code> if validation should be enabled, or
+ * <code>false</code> otherwise.
+ */
+ public static void enableHashDataInputValidation(boolean validate) {
+ DataObject.validate = validate;
+ }
+
+ /**
+ * @return <code>true</code> if hash data input validation is enabled,
+ * or <code>false</code> otherwise.
+ */
+ public static boolean isHashDataInputValidationEnabled() {
+ return validate;
+ }
+
+ /**
+ * Valid MIME types.
+ */
+ private static String[] validMimeTypes = DEFAULT_PREFFERED_MIME_TYPES;
+
+ /**
+ * Sets the list of valid hash data input media types.
+ * <p>The array is also used for transformation path selection.
+ * The transformation path with a final type, that appears in the
+ * given array in the earliest position is used selected.</p>
+ *
+ * @param mediaTypes an array of MIME media types.
+ */
+ public static void setValidHashDataInputMediaTypes(String[] mediaTypes) {
+ validMimeTypes = mediaTypes;
+ }
+
/**
* The DOM implementation used.
*/
@@ -184,7 +230,70 @@ public class DataObject {
public String getDescription() {
return description;
}
-
+
+ public void validateHashDataInput() throws SLViewerException {
+
+ if (validate) {
+
+ if (reference == null) {
+ log.error("Medthod validateHashDataInput() called before reference has been created.");
+ throw new SLViewerException(5000);
+ }
+
+ InputStream digestInputStream = reference.getDigestInputStream();
+ if (digestInputStream == null) {
+ log.error("Method validateHashDataInput() called before reference has been generated " +
+ "or reference caching is not enabled.");
+ throw new SLViewerException(5000);
+ }
+
+ if (mimeType == null) {
+ log.info("FinalDataMetaInfo does not specify MIME type of to be signed data.");
+ // TODO: add detailed message
+ throw new SLViewerException(5000);
+ }
+
+ // get MIME media type
+ String mediaType = mimeType.split(";")[0].trim();
+ // and optional charset
+ String charset = HttpUtil.getCharset(mimeType, false);
+
+ if (Arrays.asList(validMimeTypes).contains(mediaType)) {
+
+ Validator validator;
+ try {
+ validator = ValidatorFactory.newValidator(mediaType);
+ } catch (IllegalArgumentException e) {
+ log.error("No validator found for mime type '" + mediaType + "'.");
+ throw new SLViewerException(5000);
+ }
+
+ try {
+ validator.validate(digestInputStream, charset);
+ } catch (ValidationException e) {
+ if ("text/plain".equals(mediaType)) {
+ log.info("Data to be displayed contains unsupported characters.", e);
+ // TODO: add detailed message
+ throw new SLViewerException(5003);
+ } else if ("application/xhtml+xml".equals(mediaType)) {
+ // TODO: add detailed message
+ log.info("Standard display format: HTML does not conform to specification.", e);
+ throw new SLViewerException(5004);
+ } else {
+ // TODO: add detailed message
+ log.info("Data to be displayed is invalid.", e);
+ throw new SLViewerException(5000);
+ }
+ }
+
+ } else {
+ log.info("MIME media type '" + mediaType + "' is not a valid digest input.");
+ throw new SLViewerException(5001);
+ }
+ }
+
+ }
+
/**
* Configures this DataObject with the information provided within the given
* <code>sl:DataObjectInfo</code>.
diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignature.java b/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignature.java
index eba1d96d..2d89c8ae 100644
--- a/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignature.java
+++ b/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignature.java
@@ -17,6 +17,8 @@
package at.gv.egiz.bku.slcommands.impl.xsect;
import at.gv.egiz.bku.slcommands.impl.HashDataInputImpl;
+import at.gv.egiz.bku.slexceptions.SLViewerException;
+
import java.io.ByteArrayOutputStream;
import java.security.InvalidKeyException;
import java.security.InvalidParameterException;
@@ -123,9 +125,14 @@ public class STALSignature extends SignatureSpi {
// log.debug("got " + dataObjects.size() + " DataObjects, passing HashDataInputs to STAL SignRequest");
List<HashDataInput> hashDataInputs = new ArrayList<HashDataInput>();
- for (DataObject dataObject : dataObjects) {
- hashDataInputs.add(new HashDataInputImpl(dataObject));
+ for (DataObject dataObject : dataObjects) {
+ try {
+ dataObject.validateHashDataInput();
+ } catch (SLViewerException e) {
+ throw new STALSignatureException(e);
}
+ hashDataInputs.add(new HashDataInputImpl(dataObject));
+ }
SignRequest signRequest = new SignRequest();
signRequest.setKeyIdentifier(keyboxIdentifier);
diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/Signature.java b/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/Signature.java
index 191f8371..2330ed3f 100644
--- a/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/Signature.java
+++ b/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/Signature.java
@@ -81,6 +81,7 @@ import at.buergerkarte.namespaces.securitylayer._1.SignatureInfoCreationType;
import at.gv.egiz.bku.binding.HttpUtil;
import at.gv.egiz.bku.slexceptions.SLCommandException;
import at.gv.egiz.bku.slexceptions.SLRequestException;
+import at.gv.egiz.bku.slexceptions.SLViewerException;
import at.gv.egiz.bku.utils.HexDump;
import at.gv.egiz.bku.utils.urldereferencer.StreamData;
import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer;
@@ -387,10 +388,11 @@ public class Signature {
* if signing the XMLSignature fails
* @throws SLCommandException
* if building the XMLSignature fails
+ * @throws SLViewerException
* @throws NullPointerException
* if <code>signContext</code> is <code>null</code>
*/
- public void sign(DOMSignContext signContext) throws MarshalException, XMLSignatureException, SLCommandException {
+ public void sign(DOMSignContext signContext) throws MarshalException, XMLSignatureException, SLCommandException, SLViewerException {
if (xmlSignature == null) {
buildXMLSignature();
@@ -415,6 +417,9 @@ public class Signature {
Throwable cause = e.getCause();
while (cause != null) {
if (cause instanceof STALSignatureException) {
+ if (((STALSignatureException) cause).getCause() instanceof SLViewerException) {
+ throw (SLViewerException) ((STALSignatureException) cause).getCause();
+ }
int errorCode = ((STALSignatureException) cause).getErrorCode();
SLCommandException commandException = new SLCommandException(errorCode);
log.info("Failed to sign signature.", commandException);
@@ -482,11 +487,12 @@ public class Signature {
* if signing this Signature fails
* @throws SLCommandException
* if building this Signature fails
+ * @throws SLViewerException
* @throws NullPointerException
* if <code>stal</code> or <code>keyboxIdentifier</code> is
* <code>null</code>
*/
- public void sign(STAL stal, String keyboxIdentifier) throws MarshalException, XMLSignatureException, SLCommandException {
+ public void sign(STAL stal, String keyboxIdentifier) throws MarshalException, XMLSignatureException, SLCommandException, SLViewerException {
if (stal == null) {
throw new NullPointerException("Argument 'stal' must not be null.");
diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLViewerException.java b/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLViewerException.java
index 1d128a00..853328d5 100644
--- a/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLViewerException.java
+++ b/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLViewerException.java
@@ -17,9 +17,12 @@
package at.gv.egiz.bku.slexceptions;
public class SLViewerException extends SLException {
-
+
+ public SLViewerException(int errorCode) {
+ super(errorCode);
+ }
+
public SLViewerException(int errorCode, String msg, Object[] args) {
super(errorCode, msg, args);
- // TODO Auto-generated constructor stub
}
} \ No newline at end of file
diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidationException.java b/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidationException.java
new file mode 100644
index 00000000..fb332a09
--- /dev/null
+++ b/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidationException.java
@@ -0,0 +1,38 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.viewer;
+
+public class ValidationException extends Exception {
+
+ private static final long serialVersionUID = 1L;
+
+ public ValidationException() {
+ }
+
+ public ValidationException(String message) {
+ super(message);
+ }
+
+ public ValidationException(Throwable cause) {
+ super(cause);
+ }
+
+ public ValidationException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+}
diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/viewer/Validator.java b/bkucommon/src/main/java/at/gv/egiz/bku/viewer/Validator.java
new file mode 100644
index 00000000..08b21080
--- /dev/null
+++ b/bkucommon/src/main/java/at/gv/egiz/bku/viewer/Validator.java
@@ -0,0 +1,25 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.viewer;
+
+import java.io.InputStream;
+
+public interface Validator {
+
+ public void validate(InputStream is, String charset) throws ValidationException;
+
+}
diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidatorFactory.java b/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidatorFactory.java
new file mode 100644
index 00000000..e16a261e
--- /dev/null
+++ b/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidatorFactory.java
@@ -0,0 +1,165 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package at.gv.egiz.bku.viewer;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class ValidatorFactory {
+
+ /**
+ * Logging facility.
+ */
+ protected static Log log = LogFactory.getLog(ValidatorFactory.class);
+
+ private static final Class<Validator> VALIDATOR_CLASS = Validator.class;
+
+ private static final String SERVICE_ID = "META-INF/services/" + VALIDATOR_CLASS.getName();
+
+ /**
+ * Creates a new Validator for the given <code>mimeType</code>.
+ *
+ * @param mimeType
+ *
+ * @return
+ *
+ * @throws IllegalArgumentException
+ * if no Validator for the <code>mimeType</code> could be found
+ */
+ public static Validator newValidator(String mimeType) throws IllegalArgumentException {
+
+ ClassLoader classLoader = ValidatorFactory.class.getClassLoader();
+ ValidatorFactory factory = new ValidatorFactory(classLoader);
+
+ Validator validator = factory.createValidator(mimeType);
+
+ if (validator == null) {
+ throw new IllegalArgumentException("Validator for '" + mimeType
+ + "' could not be found.");
+ }
+
+ return validator;
+
+ }
+
+ private ClassLoader classLoader;
+
+ /**
+ * Private constructor.
+ *
+ * @param classLoader must not be <code>null</code>
+ */
+ private ValidatorFactory(ClassLoader classLoader) {
+
+ if (classLoader == null) {
+ throw new NullPointerException("Argument 'classLoader' must no be null.");
+ }
+
+ this.classLoader = classLoader;
+
+ }
+
+ private Validator createValidator(String mimeType) {
+
+ Iterator<URL> serviceIterator = createServiceIterator();
+ while (serviceIterator.hasNext()) {
+ URL url = serviceIterator.next();
+
+ Properties properties = new Properties();
+ try {
+ properties.load(url.openStream());
+ } catch (IOException e) {
+ log.error("Failed to load service properties " + url.toExternalForm());
+ continue;
+ }
+ String className = properties.getProperty(mimeType);
+ if (className != null) {
+ try {
+ return createValidatorInstance(className);
+ } catch (Exception e) {
+ continue;
+ }
+ }
+
+ }
+
+ return null;
+
+ }
+
+ private Validator createValidatorInstance(String className)
+ throws ClassNotFoundException, InstantiationException,
+ IllegalAccessException {
+
+ try {
+ Class<?> implClass = classLoader.loadClass(className);
+ return (Validator) implClass.newInstance();
+ } catch (ClassNotFoundException e) {
+ log.error("Validator class '" + className + "' not found.", e);
+ throw e;
+ } catch (InstantiationException e) {
+ log.error("Faild to initialize validator class '" + className + "'.", e);
+ throw e;
+ } catch (IllegalAccessException e) {
+ log.error("Faild to initialize validator class '" + className + "'.", e);
+ throw e;
+ } catch (ClassCastException e) {
+ log.error("Class '" + className + "' is not a validator implementation.", e);
+ throw e;
+ }
+
+ }
+
+ private Iterator<URL> createServiceIterator() {
+
+ try {
+ final Enumeration<URL> resources = classLoader.getResources(SERVICE_ID);
+ return new Iterator<URL> () {
+
+ @Override
+ public boolean hasNext() {
+ return resources.hasMoreElements();
+ }
+
+ @Override
+ public URL next() {
+ return resources.nextElement();
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+
+ };
+ } catch (IOException e) {
+ log.error("Failed to enumerate resources " + SERVICE_ID);
+ List<URL> list = Collections.emptyList();
+ return list.iterator();
+ }
+
+ }
+
+}
diff --git a/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureTest.java b/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureTest.java
index a650d67f..9e34d9ae 100644
--- a/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureTest.java
+++ b/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureTest.java
@@ -68,6 +68,7 @@ import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory;
import at.buergerkarte.namespaces.securitylayer._1.SignatureInfoCreationType;
import at.gv.egiz.bku.slexceptions.SLCommandException;
import at.gv.egiz.bku.slexceptions.SLRequestException;
+import at.gv.egiz.bku.slexceptions.SLViewerException;
import at.gv.egiz.bku.utils.urldereferencer.StreamData;
import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer;
import at.gv.egiz.bku.utils.urldereferencer.URLDereferencerContext;
@@ -361,7 +362,7 @@ public class SignatureTest {
}
- private void signAndMarshalSignature(Signature signature) throws MarshalException, XMLSignatureException, SLCommandException {
+ private void signAndMarshalSignature(Signature signature) throws MarshalException, XMLSignatureException, SLCommandException, SLViewerException {
Node parent = signature.getParent();
Node nextSibling = signature.getNextSibling();
@@ -387,7 +388,7 @@ public class SignatureTest {
@SuppressWarnings("unchecked")
@Test
- public void testDataObject_Base64Content_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException {
+ public void testDataObject_Base64Content_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_Base64Content_1.xml");
@@ -427,7 +428,7 @@ public class SignatureTest {
@SuppressWarnings("unchecked")
@Test
- public void testDataObject_XMLContent_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException {
+ public void testDataObject_XMLContent_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_XMLContent_1.xml");
@@ -467,7 +468,7 @@ public class SignatureTest {
@SuppressWarnings("unchecked")
@Test
- public void testDataObject_XMLContent_2() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException {
+ public void testDataObject_XMLContent_2() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_XMLContent_2.xml");
@@ -508,7 +509,7 @@ public class SignatureTest {
@SuppressWarnings("unchecked")
@Test
- public void testDataObject_LocRefContent_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException {
+ public void testDataObject_LocRefContent_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_LocRefContent_1.xml");
@@ -546,7 +547,7 @@ public class SignatureTest {
@SuppressWarnings("unchecked")
@Test
- public void testDataObject_LocRefContent_2() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException {
+ public void testDataObject_LocRefContent_2() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_LocRefContent_2.xml");
@@ -584,7 +585,7 @@ public class SignatureTest {
@SuppressWarnings("unchecked")
@Test
- public void testDataObject_Reference_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException {
+ public void testDataObject_Reference_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_Reference_1.xml");
@@ -622,7 +623,7 @@ public class SignatureTest {
@SuppressWarnings("unchecked")
@Test
- public void testDataObject_Detached_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException {
+ public void testDataObject_Detached_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_Detached_1.xml");
@@ -653,7 +654,7 @@ public class SignatureTest {
@SuppressWarnings("unchecked")
@Test
- public void testDataObject_Detached_Base64Content() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException {
+ public void testDataObject_Detached_Base64Content() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_Detached_Base64Content.xml");
@@ -704,7 +705,7 @@ public class SignatureTest {
@SuppressWarnings("unchecked")
@Test
- public void testTransformsInfo_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException {
+ public void testTransformsInfo_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
CreateXMLSignatureRequestType requestType = unmarshalCreateXMLSignatureRequest("TransformsInfo_1.xml");
diff --git a/pom.xml b/pom.xml
index 352257f0..3438e596 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,17 +7,18 @@
<version>1.0-SNAPSHOT</version>
<name>BKU</name>
<url>http://bku.egiz.gv.at</url>
- <modules>
- <module>utils</module>
- <module>bkucommon</module>
- <module>STAL</module>
- <module>BKUOnline</module>
- <module>smcc</module>
- <module>BKULocal</module>
- <module>BKUApplet</module>
- <module>smccSTAL</module>
- <module>STALService</module>
- <module>BKUCommonGUI</module>
+ <modules>
+ <module>utils</module>
+ <module>bkucommon</module>
+ <module>STAL</module>
+ <module>BKUOnline</module>
+ <module>smcc</module>
+ <module>BKULocal</module>
+ <module>BKUApplet</module>
+ <module>smccSTAL</module>
+ <module>STALService</module>
+ <module>BKUCommonGUI</module>
+ <module>BKUViewer</module>
</modules>
<developers>
<developer>
@@ -161,6 +162,16 @@
<version>4.4</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ <version>2.9.1</version>
+ </dependency>
+ <dependency>
+ <groupId>xalan</groupId>
+ <artifactId>xalan</artifactId>
+ <version>2.7.0</version>
+ </dependency>
<dependency>
<groupId>iaik</groupId>
<artifactId>iaik_jce_full_signed</artifactId>